Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
2. Sep 2007
Guten Morgen.
Die Beschränkung auf zwei Ebenen - ich zeige dir Code zu dem Ansatz aus Beitrag #11, aber statt des OnClick() verwende ich OnChange(), da du wohl noch kein Kontextmenü verwendest.
procedure TDemoForm.TreeViewChange(Sender: TObject; Node: TTreeNode);
begin
// miAddNode ist bei mir das MenuItem, über das ein
// beuer Knoten in den Baum eingefügt werden kann.
...
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
1. Sep 2007
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:
resourcestring
S_EXT = '.txt';
function NodeText(node: TTreeNode; startLevel: integer; delimiter: char = PathDelim): string;
begin...
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
1. Sep 2007
Du kannst im Ereignis OnClick() der TreeView die Eigenschaft Enabled deines Menüeintrags "Unterpunkt1" in Abhängigkeit von Node.Level steuern. Später lernst du dann irgendwann TActionList und TAction kennen.
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
1. Sep 2007
Hallo,
im Prinzip ja, das Ereignis OnEdited() von TTreeView gibt dir die nötigen Informationen. Der Knoten Node hat beim Eintritt in deine Eregnisbehandlung noch den alten Wert und in S wird dir der neue Text angeboten. Die Prozedur zum Umbenennen von Dateien und Verzeichnissen heißt RenameFile().
Übrigens solltest du bei ShowModal immer auch eine Abbruchmöglichkeit vorsehen:
...
Forum: Object-Pascal / Delphi-Language
Delphi
by marabu,
1. Sep 2007
Hallo,
wenn du dir in der Delphi Online Hilfe die Klasse TTreeNode anschaust, dann findest du die Eigenschaft "Level". Die solltest du für
deine Zwecke nutzen können.
procedure TDemoForm.TreeViewClick(Sender: TObject);
begin
with Sender as TTreeView do
case Selected.Level of