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 VirtualStringTree Reindex bei Drag&Drop verhindern (https://www.delphipraxis.net/142548-virtualstringtree-reindex-bei-drag-drop-verhindern.html)

Alois 30. Okt 2009 06:41


VirtualStringTree Reindex bei Drag&Drop verhindern
 
Hallo,

kann ich wie bei
Delphi-Quellcode:
vst.DeleteNode(SelectedNodes[i], false)
auch bei der Drag&Drop-Funktion den Reindex abschalten?

Ich möchte gerne über ein Hintergrunddienst auf Node.Index zugreifen, der sich aber während der Ausführung des Multithread-Programmteils nicht ändern darf.

Oder kann ich das Reindex generell im vst abschalten?

Gruss Alois ;)

Alois 31. Okt 2009 14:26

Re: VirtualStringTree Reindex bei Drag&Drop verhindern
 
Hi VST Fans,

ist kein VST Guru an Board der mir die Frage beantworten kann? Geht oder Geht nicht?
Oder habe ich mich bdei der Beschreibung meines Problems falsch ausgedrückt? :wiejetzt:

Normalerweise sieht der vst Index einer Tabelle so aus:
Code:
Node.Index AbsoluteIndex
     0           0
     1           1
     2           2
     3           3
Nach dem Löschen einer Zeile (im Beispiel die Zeile Nr. 1) über vst.DeleteNode(SelectedNodes[i], false):
Code:
Node.Index AbsoluteIndex
     0           0
     2           1
     3           2
Wenn ich nun die Zellen über Drag und Drop verschiebe sieht das ganze wieder so aus:
Code:
Node.Index AbsoluteIndex
     0           0
     1           1
     2           2
Ich hätte aber ganz gerne das bei Drag&Drop der alte Index erhalten bleibt, wie bei DeleteNode.

Gruss Alois ;)

himitsu 31. Okt 2009 14:38

Re: VirtualStringTree Reindex bei Drag&Drop verhindern
 
Ich vermute einfach mal, das beim Delete der Node nur als gelöscht markiert wird, er aber dennoch in der Liste verbleibt.
Oder es gibt einen Fehler, welcher die Indize nicht neu berechnet, da sie zur Optimierung in den Nodes zwischengespeichert werden.

Beim Verschieben werden die Nodes aber an anderer Stelle neu eingeügt und erhalten dadurch eine neue Idizierung.

Die Frage ist nun, warum willst du diesen Index beibehalten?
Als eindeutiges Erkennungsmerkmal für einen Node ist dieser Index nicht geeignet.

Alois 31. Okt 2009 14:44

Re: VirtualStringTree Reindex bei Drag&Drop verhindern
 
Zitat:

Zitat von himitsu
Ich vermute einfach mal, das beim Delete der Node nur als gelöscht markiert wird, er aber dennoch in der Liste verbleibt.
Oder es gibt einen Fehler, welcher die Indize nicht neu berechnet, da sie zur Optimierung in den Nodes zwischengespeichert werden.

Beim Verschieben werden die Nodes aber an anderer Stelle neu eingeügt und erhalten dadurch eine neue Idizierung.

Die Frage ist nun, warum willst du diesen Index beibehalten?
Als eindeutiges Erkennungsmerkmal für einen Node ist dieser Index nicht geeignet.

Genau das wollte ich wissen. Zu Zeit arbeite ich in meiner Tabelle mit dem Node.Index und das hätte zur eindeutigen Identifizierung
der einzelnen Einträge gerade so schön gepasst. Also muss ich mir wohl einen eigenen Index basteln.

Wäre ja zu schön gewesen.

Gruss Alois ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz