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 VST - Nur bestimmte Unterknoten per Multiselect selektieren (https://www.delphipraxis.net/189732-vst-nur-bestimmte-unterknoten-per-multiselect-selektieren.html)

TUX_der_Pinguin 14. Jul 2016 07:47

VST - Nur bestimmte Unterknoten per Multiselect selektieren
 
Hallo,

ich habe eine Baumstruktur (TVirtualStringTree) die wie folgt aussieht. Sie besteht aus ein paar Hauptknoten (level 0) und darunter befinden sich zwei arten von Unterknoten (SubNode & xxx). Jetzt möchte ich Multiselect aktivieren es aber nur erlauben das man nur die "SubNode" Knoten markieren kann. Klickt der Anwender auf einen Hauptknoten oder auf den Unterknoten (xxx) kann die Makierung der anderen ruhig aufgehoben werden. Es müsste ein Event geben welches vor der Selektion ausgeführt wird in der man entscheiden kann ob der Eintrag selektiert werden darf oder nicht. Ich konnte leider derartiges bisher nicht finden. Geschweige den einen Ansatz für eine Lösung.

Ich hoffe jemand von euch hat den entscheidenden Hinweis für mich ;-)

mfg

GG

Code:
Node1
|-SubNode1
|-SubNode2
|-XXX
Node2
|-SubNode1
|-SubNode2
|-SubNode3
|-SubNode4
|-SubNode5
|-XXX
Node3
|-SubNode1
|-SubNode2
|-SubNode3
|-xxx

Aviator 14. Jul 2016 07:53

AW: VST - Nur bestimmte Unterknoten per Multiselect selektieren
 
Es gibt das Event OnAddToSelection. Da kannst du dann den Allowed Parameter auf False setzen. Gerade per Handy geschrieben. Deshalb kein Beispiel. Ich hoffe ich verwechsel das jetzt nicht.

TUX_der_Pinguin 14. Jul 2016 07:58

AW: VST - Nur bestimmte Unterknoten per Multiselect selektieren
 
Zitat:

Zitat von Aviator (Beitrag 1342631)
Es gibt das Event OnAddToSelection. Da kannst du dann den Allowed Parameter auf False setzen. Gerade per Handy geschrieben. Deshalb kein Beispiel. Ich hoffe ich verwechsel das jetzt nicht.

OnAddToSelection hat den Parameter "Allowed" nicht aber OnFocusChanging ...

Da muss ich wohl einfach mal etwas rum experimentieren :)

Aviator 14. Jul 2016 08:37

AW: VST - Nur bestimmte Unterknoten per Multiselect selektieren
 
Ja sorry. Hatte das in der Eile mit diversen anderen Events verwechselt. Ich stand (warum ich nicht dran gedacht habe weiß ich nicht) selbst schon mal vor dem gleichen Problem. Habe es schlussendlich so gelöst, dass ich mir den SelektionStatus in meinen NodeDaten gemerkt hatte. Dort konnte ich dann entsprechend über den Setter die Variable auf true bzw. auf false setzen. Aber mit OnFocusChanging könntest du es mal probieren. Da hast du Recht. Das könnte funktionieren. Was du mit dem Event OnAddToSelection machen könntest wäre, dass du den SelektionStatus der Node wieder zurücksetzt wenn die nicht selektiert werden darf. Ist zwar etwas unsauber, aber vielleicht klappt es ja.

Ich wollte immer mal ein Feature Request an JAM Software schreiben, dass die ein OnAddingToSelection Event mit einbauen. Bin aber noch nicht dazu gekommen. Alles kann man irgendwie noch unterbrechen. NodeChange, HeaderResize, ... nur die Selektion kann man nicht mehr abbrechen. Schade eigentlich.

TUX_der_Pinguin 14. Jul 2016 08:50

AW: VST - Nur bestimmte Unterknoten per Multiselect selektieren
 
Ich habe gerade eine Option gefunden die mich zumindest für einen Großteil weiter bringt.

Ich habe in den TreeOptions.SelectionOptions das Flag 'toSiblingSelectConstraint' gesetzt, dadurch kann ich nur Einträge innerhalb eines Teilbaums gleichzeitig markieren.
Komisch ist nur das ich trotzdem auf die anderen Einträge klicken kann und diese den Focus bekommen.


http://www.delphipraxis.net/552575-post2.html

TUX_der_Pinguin 14. Jul 2016 10:30

AW: VST - Nur bestimmte Unterknoten per Multiselect selektieren
 
Wie bereits erwähnt war die Option 'toSiblingSelectConstraint' ein Hauptargument für das gelingen dazu habe ich ein paar Feinheiten in den Ereignissen 'OnAddToSelection' und 'OnFocusChanging' angepasst so das das Ergebnis zufriedenstellend ist. :-)

Aviator 14. Jul 2016 11:57

AW: VST - Nur bestimmte Unterknoten per Multiselect selektieren
 
Es lebe der Workaround! :thumb:

Aviator 21. Jul 2016 12:23

AW: VST - Nur bestimmte Unterknoten per Multiselect selektieren
 
Ich habe gerade mal per Kontaktformular ein Feature Request bei JamSoftware eingestellt. Vielleicht kommt ja was zurück.

Zum Einen das Event OnAddingToSelection. Und zum Anderen eine Property VisibleIndex[Node] des Trees um den aktuellen Index einer Node unabhängig vom dazwischen ausgeblendeten Nodes zu bekommen. Ist dann beim Zeichnen von alternierenden Zeilenfarben besser. Aktuell finde ich hierfür nämlich keine praktikable Lösung. Mache hierfür aber bei Bedarf noch einen extra Fred auf. Das Thema wurde allerdings schon mehrfach behandelt. Beispiel!

TUX_der_Pinguin 22. Jul 2016 07:22

AW: VST - Nur bestimmte Unterknoten per Multiselect selektieren
 
:thumb:

Dann mal abwarten ob da was kommt ;-)


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