Dass das Umbenennen nicht funktioniert könnte daran liegen, dass du in S nur den Text des Knotens geliefert bekommst, der Dateinamen aber auch den Text des übergeordneten Knotens benötigt. Du solltest anstatt des RenameFile erstmal eine Kontrolle einbauen:
Delphi-Quellcode:
resourcestring
S_EXT = '.txt';
function NodeText(node: TTreeNode; startLevel: integer; delimiter: char = PathDelim): string;
begin
if not Assigned(node) then
Result := ''
else if node.Level > startLevel then
Result := NodeText(node.Parent, startLevel, delimiter) + delimiter + node.Text
else if node.Level = startLevel then
Result := node.Text
else
Result := ''
end;
procedure TDemoForm.TreeViewEdited(Sender: TObject; Node: TTreeNode;
var S: String);
var
exePath, oldName, newName: string;
begin
exePath := ExtractFilePath(ParamStr(0));
oldName := exePath + NodeText(Node, 0);
if Node.Level = 1 then
begin
oldName := oldName + S_EXT;
newName := ExtractFilePath(oldName) + S + S_EXT;
end else newName := exePath + S;
ShowMessage(Format('RenameFile(%s, %s)', [oldname, newName]));
S := Node.Text;
// RenameFile(oldName, newName);
end;
Du kannst mrOk bzw. mrCancel an die Eigenschaft ModalResult der Form zuweisen. Das führt bei modalen Fenstern zum Schließen und der Rückgabe dieses Wertes. Du kannst das aber auch über die Eigenschaft ModalResult des Button erledigen.
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
begin
// {Form3.}Close;
// Wenn du eine Methode der Form3 aufrufen willst, dann
// ist dein Aufruf in Ordnung, aber innerhalb von Methoden
// selbst vermeidet man nach Möglichkeit jeden Verweis
// auf eine Instanz.
ModalResult := mrOK ;
end;
Zitat von
atgis:
... Ich kann auch mal den kompletten Quellcode hochladen ...
Kein Drohungen bitte...
Zitat von
atgis:
Wie kann ich das TreeView auf einen Inhalt überprüfen?
Wie wäre es mit TreeView.Items.Count?