Let's say you have your files listed in a ListView, which property ReadOnly is false. The user can rename the objects in the ListView and you can use the Event OnEdited of the ListView to handle the renaming:
procedure TMainForm.ListViewEdited(Sender: TObject; Item: TListItem; var S: String); var newName: WideString; begin ShellBrowser.ObjectName := Item.Caption;//the complete path must be in the caption newName := ExtractFileName(S);//ExtractFileName is contained in SysUtils ShellBrowser.RenameObject(newName); end;