AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TControlList

Ein Thema von TurboMagic · begonnen am 6. Apr 2024 · letzter Beitrag vom 7. Apr 2024
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.825 Beiträge
 
Delphi 12 Athens
 
#1

TControlList

  Alt 6. Apr 2024, 22:48
Hallo,

ich will einen Dialog zur Auswahl einer Art Aktion bauen (also was als nächstes zu tun ist).
Dafür hab' ich die VCL ControlList ausprobiert. Im Gurnde sieht das nett aus, hat aber noch
Probleme beim Tastaturhandling.

Der Dialog wird modal mittels ShowModal aufgerufen und das OnClick Event der ControlList
setzt ModalResult auf mrOK, was das Fenster schließt. Nur wenn ich das per Tastatur bedienen
will schliet sich das Fenster, sobald ich eine der Pfeiltasten drücke.

Eigentlich möchte ich mit den Pfeiltasten einen Eintrag selektieren und mit Enter dann
"quittieren" und damit das Fenster schließen.

Gibt's da irgen eine Lösung dafür?

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.351 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TControlList

  Alt 7. Apr 2024, 08:40
Ich würde dir raten, dafür OnItemDblClick zu verwenden. Dann bekommst du keine Konflikte.

Ansonsten kannst du im OnKeyDown das OnClick deaktivieren und im OnKeyUp wieder aktivieren. Das Problem ist aber, dass OnClick immer ausgelöst wird, auch wenn gar kein Eintrag angeklickt wurde. Wenn also per Tastatur (oder voreingestellt) ein Eintrag ausgewählt wurde, wird der Dialog bei einem Klick außerhalb der Items dennoch geschlossen. OnItemClick wiederum wird nur ausgelöst, wenn sich der Eintrag ändert.

Leider wurden mit dieser Komponente wieder Inkonsistenzen hinzugefügt:
OnItemClick löst nur bei einem Wechsel des Eintrags aus. OnItemDblClick löst auch bei einem Doppelklick auf den schon ausgewählten Eintrag aus. Warum kann man das nicht bei neuen Komponenten sauber lösen? Man könnte z.B. nur ein OnMouseClick anbieten, das nur auf die Maus reagiert, um die Logik von den alten OnClick Ereignissen abzugrenzen. Aber zumindest sollte die Logik bei zwei neuen Klickereignissen sich nicht unterscheiden...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke ( 7. Apr 2024 um 08:46 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.825 Beiträge
 
Delphi 12 Athens
 
#3

AW: TControlList

  Alt 7. Apr 2024, 14:45
Hallo,

dabke für die Tipps. Werde mir das nacher mal anschauen.
Eine nicht ganz so schöne Alteriative ist mir zwischenzeitlich gekommen:

in der Liste selektiert man nur die Option und der Dialog wird erst durch Betätigen
eine "Weiter" oder "OK" Buttons geschlossen...

Ist halt für die Mausschubser etwas unkomfortabler...

Grüße
TurboMagic
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.825 Beiträge
 
Delphi 12 Athens
 
#4

AW: TControlList

  Alt 7. Apr 2024, 15:19
Ich würde dir raten, dafür OnItemDblClick zu verwenden. Dann bekommst du keine Konflikte.

Ansonsten kannst du im OnKeyDown das OnClick deaktivieren und im OnKeyUp wieder aktivieren. Das Problem ist aber, dass OnClick immer ausgelöst wird, auch wenn gar kein Eintrag angeklickt wurde. Wenn also per Tastatur (oder voreingestellt) ein Eintrag ausgewählt wurde, wird der Dialog bei einem Klick außerhalb der Items dennoch geschlossen. OnItemClick wiederum wird nur ausgelöst, wenn sich der Eintrag ändert.
Grr! Der erste Versuch das Umzusetzen endet erst Mal in einer Fehlermeldung des Formdesigners.
Hatte auf das Event Doppelgeklickt um wie üblich den leeren handler anzulegen und jetzt sagt die
IDE sie kann den nicht finden. Duh! Die IDE hätte den doch erst anlegen sollen...

Naja, gibt's halt den nächsten Bugreport...

Ah, inzwischen gesehen, dass die IDE es wirklich versuchte, es aber an falscher telle mitten in einen anderen Handler reinpappen wollte...

Grüße
TurboMagic

Geändert von TurboMagic ( 7. Apr 2024 um 15:31 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 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