![]() |
TreeView in Datei speichern bei bestimmten Aktionen
Hallo,
ich habe ein TreeView auf meinem Formular. Nun möchte ich dieses in eine Datei speichern, wenn bestimmte Aktionen auftreten. Das scheint aber nicht ganz einfach zu sein. Folgendes: Mit einem Button erstelle ich ein Node der editierbar ist, heißt, gleich nach dem erstellen kann man ihn ändern oder eben nicht. Das Editieren kann man mit 2 Aktionen beenden, entweder mit Enter oder mit der Maus irgendwo hin klicken. Während das Programm läuft, kann man immer wieder den Eintrg ändern. Wie stell ich das nun am besten an, ohne bei jedem Klick auf das TreeView die Daten zu speichern, weil ich nicht weis, ob es da nicht einmal zu einem Fehler kommen könnte. Das Enter über MouseUp ist kein Problem aber eben der Mausklick. Klicke ich zum Beispiel in ein anderes Control kann ich das wiederrum nicht so einfach abfangen. Welche Lösung kennt ihr? Gruß Marcel |
Re: TreeView in Datei speichern bei bestimmten Aktionen
Hi,
bringt dich das Event onEdited des TTreeview eventuell weiter? |
Re: TreeView in Datei speichern bei bestimmten Aktionen
Leider nein. Es heißt zwar, das OnEdited kurz nach dem editieren ausgelöst wird aber das ist wohl so schnell, dass es die aktuelle Änderung nicht mit einbezieht.
|
Re: TreeView in Datei speichern bei bestimmten Aktionen
Hallo,
wie ändert denn der Benutzer die Items des Treeview, über das Feld welches man zum Beispiel mit
Delphi-Quellcode:
aufrufen kann. Da würde dann falls der Eintrag geändert würde das Ereignis onEdited aufgerufen werden.
treeview.Items.Item[...].EditText;
Ober wird irgendwo bei dir Code wie dieser
Delphi-Quellcode:
ausgeführt.
treeview.Items.Item[...].Text:= ...;
|
Re: TreeView in Datei speichern bei bestimmten Aktionen
Guten Morgen,
da das Ereignis OnEdited() noch vor der endgültigen Änderung auftritt, bietet sich eine Nachrichtenverzögerung an:
Delphi-Quellcode:
Grüße vom marabu
uses
..., AppMessages; { unit AppMessages; interface uses Messages; const UM_EDITED = WM_USER; implementation end. } type TDemoForm = class(TForm) TreeView: TTreeView; procedure FormCreate(Sender: TObject); procedure TreeViewCancelEdit(Sender: TObject; Node: TTreeNode); procedure TreeViewEdited(Sender: TObject; Node: TTreeNode; var S: String); private procedure UMEdited(var Message: TMessage); message UM_EDITED; end; var DemoForm: TDemoForm; implementation {$R *.dfm} procedure TDemoForm.UMEdited(var Message: TMessage); begin with Message do begin ShowMessage(TTreeNode(LParam).Text); Result := 0; end; end; procedure TDemoForm.TreeViewEdited(Sender: TObject; Node: TTreeNode; var S: String); begin PostMessage(Handle, UM_EDITED, 0, Integer(Node)); end; |
Re: TreeView in Datei speichern bei bestimmten Aktionen
Guten Morgen,
Nachrichtenverzögerung ist sehr gut. Hat funktiomniert. Danke Dir marabu. @bitsetter: Ich rufe nicht EditText auf, aber die Wirkung ist die gleiche. Der Benutzer markiert das Item und klickt dan nochmal drauf, dadurch kann man ihn editieren. Da kann ich das jetzt so umbauen, dass ich die Abfrage mit der Entertaste nicht mehr brauche, da es ja jetzt funktioniert. Nochmals Danke an beide. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz