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/)
-   -   Shortcuts bremsen Virtualtree aus (https://www.delphipraxis.net/209786-shortcuts-bremsen-virtualtree-aus.html)

freimatz 22. Jan 2022 11:54

Shortcuts bremsen Virtualtree aus
 
Hallo zuzsammen,
cih habe eine VCL-App mit sehr vielen (1000) Controls im Hauptfenster. (Etliche sind in dockbaren Bereichen und werden auch erst zur Laufzeit eingehängt.)

Eines der Controls ist ein TVirtualStringTree. Da gibt es einen Baum darin mit diversen Einträgen. Damit habe ich etliche ähnliche Probleme.
1. Über eine Funktion kann man bestimmte Einträge auch editieren. Das klappt soweit bis man versuche die Taste Entf zuu drücken. Dann wird nicht ein Zeichen gelöscht sondern nachgefragt ob der Eintrag gelöscht werden soll. Das liegt daran, dass es da eine Action gibt die den Shortcut Entf hat. Und diese Action reagiert nun darauf. Als Hack habe ich nun mal eingebaut, dass im OnEditing die Action disabled wird und im OnEdited wieder enabled. Das funktioniert, finde ich aber nicht schön.
2. Ähnlich ist der Fall bei F2. Da würde ich erwarten, dass man in den Editiermodus gelangt. Da reagiert jedoch eine Action ganz woanders darauf. Die kann ich nicht so einfach disablen.
3. Wenn ich zweimal mit der Maus auf einen Eintrag klicke würde ich auch erwarten in den Editiermodus zu kommen. Das geht gar nicht. Wieso?

Wie baut man denn sowas sauber auf?

peterbelow 23. Jan 2022 11:12

AW: Shortcuts bremsen Virtualtree aus
 
Actions haben einen OnUpdate-Event. Dort kann man die Action disablen wenn das ActiveControl eines ist, das die Shortcuts selbst braucht.

Gausi 23. Jan 2022 13:11

AW: Shortcuts bremsen Virtualtree aus
 
Zitat:

Zitat von freimatz (Beitrag 1501030)
3. Wenn ich zweimal mit der Maus auf einen Eintrag klicke würde ich auch erwarten in den Editiermodus zu kommen. Das geht gar nicht. Wieso?

Sind bei den MiscOptions toEditable und toEditOnClick angewählt?

freimatz 24. Jan 2022 10:49

AW: Shortcuts bremsen Virtualtree aus
 
@Gausi: toEditable ja, toEditOnClick nein. Danke funktioniert wenn alle an sind. :-)

@Peter:
Wie kann das gehen? Bei meinem Fall 1 ist das noch ok, aber bei Fall 2 - da kennt diese Action den Tree gar nicht (und umgekehrt). Gibt es da keine generelle Lösung? Ich meine bei konkurrierenden Shortcuts sollte das zum Zuge kommen das näher am Focus ist.

peterbelow 24. Jan 2022 12:40

AW: Shortcuts bremsen Virtualtree aus
 
Zitat:

Zitat von freimatz (Beitrag 1501102)

@Peter:
Wie kann das gehen? Bei meinem Fall 1 ist das noch ok, aber bei Fall 2 - da kennt diese Action den Tree gar nicht (und umgekehrt). Gibt es da keine generelle Lösung? Ich meike bei konkurrierenden Shortcuts sollte das zum Zuge kommen das näher am Focus ist.

Woher soll die Action wissen, dass das ActiveControl den Shortcut selbst verwendet? Es gibt da nur eine mehr generelle Methode (die WM_GETDLGCODE-Message), die aber für dein Problem eventuell nicht spezifisch genug ist.

Eventuell kann Dir dieser alte Artikel noch ein paar Ideen liefern: A Key's Odyssey

freimatz 28. Jan 2022 15:11

AW: Shortcuts bremsen Virtualtree aus
 
Danke für Deine Meldung.
Die Antwort auf meine Frage "Gibt es da keine generelle Lösung?" lautet dann wohl: Nein. :)
Dann schau ich also selber was ich machen kann.

Der Artikel kommt mir bekannt vor. Ist aber sicher einige Jahre her dass ich den mal gelesen hatte. Werde den mir mal wieder reinziehen. Danke.

peterbelow 28. Jan 2022 19:11

AW: Shortcuts bremsen Virtualtree aus
 
Die Demo-Anwendung zum Artikel (+ selbiger als doc oder PDF) ist mittlerweile auf GitHub: https://github.com/PeterBelow/KeyTrace


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