Hallo,
Zitat von
Masterof:
... z.B klicke ich in ein Memo und anschließend wieder auf den löschen Button, es ist zwar nichts markiert, aber er löscht trotzdem einen Eintrag ...
Damit man sehen kann welcher Knoten markiert ist, auch wenn TreeView nicht den Focus hat, muss die Eigenschaft HideSelection der TreeView im
OI auf False gesetzt werden.
Zitat von
Masterof:
ja du hast recht, es wir der nächste übergeordnete Knoten gelöscht. Ich habe schon versucht zu prüfen ob ein Eintrag ausgewählt ist mit der Eigenschaft Selected, aber das wird in der If Abfrage nicht akzeptiert.
Ja das mit der Abfrage könnte ich machen, aber es das ist nicht die beste Lösung.
MfG Master
Die Eigenschaft Selected kannst Du so abfragen:
Delphi-Quellcode:
if TreeView1.Selected <> nil then
showmessage('Ein Eintrag ist im TreeView selectiert');
Wenn ich es richtig verstanden habe, dann soll erst dann ein Knoten gelöscht werden können, wenn der Anwender selectiert hat.
So geht es:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if TreeView1.Selected <> nil then
begin
TreeView1.Items.Delete(TreeView1.Selected);
Button1.Enabled := False;
end;
end;
procedure TForm1.TreeView1Enter(Sender: TObject);
begin
if TreeView1.Items.Count > 0 then//Zugriffsfehler vermeiden
Button1.Enabled := True;
end;
procedure TForm1.TreeView1Exit(Sender: TObject);
begin
Button1.Enabled := False;
end;