Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Tvirtualtreeview und DeleteChildren(Node); (https://www.delphipraxis.net/77482-tvirtualtreeview-und-deletechildren-node-%3B.html)

hanspeter 20. Sep 2006 10:24


Tvirtualtreeview und DeleteChildren(Node);
 
Hallo,
ich setze das VirtualTreeview ein und möchte hier manuell Knoten (inclusive Child)
löschen.

Das erfolgt mit VST.DeleteChildren(Node).

nun muss ich aber die als Zeiger verlinkten Daten mit freigeben.
Dazu habe ich einen Eventhandler der über "onBeforeItemErase" der das tun soll.

Mein Problem ist jetzt, das VST bei jedem notwendigen Neuzeichnen des Baumes die Knoten
löscht und damit onBeforeItemErase aufruft.

Wie kann ich erkennen, ob das Löschen über die Delete Funktion aufgerufen wurde:

Beim Borland Treeview funktionierte das.
Bei VST werden die Sätze offensichtlich erst markiert und dann später timergesteuert gelöscht.

Damit funktioniert die Sequenz nicht:

isDeletemode := true;
VST.DeleteChildren(Node);
isDeletemode := false;


Hat wer eine Idee?

Mit Gruß

hanspeter

Hawkeye219 20. Sep 2006 10:40

Re: Tvirtualtreeview und DeleteChildren(Node);
 
Hallo hanspeter,

du hast das falsche Ereignis erwischt! Versuche einmal, die Daten in der Behandlungsroutine für das Ereignis OnFreeNode freizugeben. Das Ereignis OnBeforeItemErase wird ausschließlich für die Darstellung benötigt.

Gruß Hawkeye

hanspeter 20. Sep 2006 11:01

Re: Tvirtualtreeview und DeleteChildren(Node);
 
Zitat:

Zitat von Hawkeye219
Hallo hanspeter,

du hast das falsche Ereignis erwischt! Versuche einmal, die Daten in der Behandlungsroutine für das Ereignis OnFreeNode freizugeben. Das Ereignis OnBeforeItemErase wird ausschließlich für die Darstellung benötigt.

Gruß Hawkeye

Man hab ich Tomaten auf den Augen?

Danke jetzt geht es.
Der eigentliche Löschvorgang muß auch über ein Flag gekapselt werden, da die Funktion
im laufenden Betrieb mehrfach aufgerufen wird.

Gruß Peter


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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