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/)
-   -   [Gelöst] VST OnFocusChanged und Selection (https://www.delphipraxis.net/164630-%5Bgeloest%5D-vst-onfocuschanged-und-selection.html)

christophspaeth 22. Nov 2011 16:14


[Gelöst] VST OnFocusChanged und Selection
 
Hallo,

nochmal eine vst-Frage von mir. Bei der Suche nach einem OnSelectionChanged-Event bin ich schon auf diesen Eintrag gestoßen: [VST] Ereignis beim Auswählen eines Nodes.

Abhängig von der Auswahl möchte ich andere Controls außerhalb des VST aktualisieren, jedoch verhält sich der vst meiner Beobachtung nach anders, ob ich mit Maus oder Tastatur arbeite:
Wenn ich die Selektion mit der Maus ändere, ist der an OnFocusChanged übergebene Knoten schon selektiert, wenn ich die Auswahl mit den Cursortasten ändere, ist noch der vorherige Knoten selektiert, was mir gewisse Probleme bereitet.

Nachdem später auch MultiSelect möglich sein soll, ist der Ansatz, mir die im OnChange-Event die selektierten Nodes (s. verlinkter Post, Kommentar 2) zu merken etwas aufwändiger.

Hat da jemand eine Idee?

Danke & Gruß
Chris

ConnorMcLeod 22. Nov 2011 16:32

AW: VST OnFocusChanged und Selection
 
Mein Ansatz wäre
Delphi-Quellcode:
TBaseVirtualTree.IterateSubtree
und Filter auf
Delphi-Quellcode:
vsSelected
.

christophspaeth 22. Nov 2011 16:36

[Gelöst] AW: VST OnFocusChanged und Selection
 
Hallo ConnorMcLeod,

danke für deine Antwort. Mein Problem ist nicht, dass ich nciht an die selektierten Einträge rankäme (vst.GetFirstSelected / vst.GetNextSelected). Das Problem ist vielmehr, dass ich kein geeignetes Event gefunden habe.

Ich werde trotzdem mal ausprobieren, ob ein von onFocusChanged aus angestoßenes IterateSubtree vielleicht die Änderung der selection immer mitbekommt.

Edit: Nein, (wie erwartet) stimmt auch das Ergebnis von IterateSubTree (wenn von onFocusChanged aus aufgerufen) bei verwendung der Cursortasten nicht mit der erwarteten Auswahl überein.

Edit2: Laut dem vst-Quellcode *ist* das OnChanged-Event das Selection changed event (auch wenn der Name und der von mir im Ursprungsposting verlinkte Post IMHO etwas anderes suggerieren), auf jeden Fall müsste es für mich passen.
Für Leute, die auch nach dem Problem suchen (alles nur meine Beobachtung): Wenn die Auswahl von einem Knoten zum anderen wandert, erhält man zwei Events - eins für das deselect des alten und eins für das select des neuen Knotens. Beim Deselect ist der Parameter Node nil. Achtung: Wenn mit Ctrl+A oder einem Mausrahmen mehrere selektiert werden, scheint Node auch nil zu sein, das ist also nicht als alleiniger Indikator für deselect geeignet!

Gruß Chris

ConnorMcLeod 23. Nov 2011 09:53

AW: [Gelöst] VST OnFocusChanged und Selection
 
Spannend - danke für die Info!


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