Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#13

Re: TreeView - Archiv erstellen

  Alt 1. Sep 2007, 17:53
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?
  Mit Zitat antworten Zitat