VST, Suche SelectItem-ähnliches Event. OnChange scheitert an FocusedNode.GetData
Im TListView gibt es ein Event SelectItem. Das wird auch aktiviert, wenn man bei dauerhaft gedrückter Maustaste Listview-Items im Report-Stil markiert.
Gibt es sowas auch für das VirtualStringTree? Ich möchte mehrere Nodes mit gedrückter Maustaste selektieren und in der Caption des Programms ausgeben wieviele selektiert sind. Es gibt zwar OnChange, aber da bekomme ich beim dem Aufruf eine Zugriffsverletzung wenn man vorher nicht mindestens 1x einen Node angeklickt hat.
Delphi-Quellcode:
Und genau diesen TData-Daten brauche ich leider genau da, damit ich weiß über welchen Node (wenn einer selektiert ist) ich gerade mit meiner Multi-Selektierung (gedrückte linke Maustaste) fahre.
if VST.SelectedCount = 1 then
Data := VST.FocusedNode.GetData<TData>; |
AW: VST, Suche SelectItem-ähnliches Event. OnChange scheitert an FocusedNode.GetData
.. ich denke Du wirst nicht umhin kommen , die Mouseposition in einen Index umzurechnen.
Stichhworte: Mouse.CursorPos und ScreenToClient Grüße Klaus |
AW: VST, Suche SelectItem-ähnliches Event. OnChange scheitert an FocusedNode.GetData
Schau dir mal OnAddToSelection und OnRemoveFromSelection an.
|
AW: VST, Suche SelectItem-ähnliches Event. OnChange scheitert an FocusedNode.GetData
Ich konnte das ganze Problem jetzt noch durch eine Art Schummelei ausgleichen.
Wenn ich Nodes mit dem Selektierungs-Kasten markiere, werden bestimmte Elemente der Benutzeroberfläche aktiviert oder deaktiviert. Das Problem war, dass wenn man einen Node selektiert hat alles abläuft wie gewünscht. Beim zweiten (mit dem selben gedrückten Mausklick) auch. De-selektiert man jetzt einen Node (noch immer im selben gedrückten Mausklick), dann weiß das VST zwar, dass nur noch 1 Node selektiert ist aber der übergebene Node an OnChange ist immer nil. Wahrscheinlich weil er selektiert war und sich danach nicht mehr ändert. Repariert habe ich dieses Verhalten, indem ich am Ende meiner OnChange-Prozedur nun prüfe
Delphi-Quellcode:
Ob das aber das Gelbe vom Ei ist weiß ich nicht. Anders habe ich es noch nicht hinbekommen.
if (NodeSelectedCount = 1) then
begin // FIX if SelectedNode = nil then // Wenn der Node nil ist, obwohl er selektiert ist ... SelectedNode := VST.GetFirstSelected; // ... hole den letzten verbleibenden selektierten Node // /FIX Das scheint ein Problem im OnChange mit dem letzten selektierten Node zu sein. SelectedCount funktioniert wie es soll hingegen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:52 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