![]() |
TCheckBox OnKeyDown nicht bei Cursortasten
Hallo,
ich habe ein Formular mit KeyPreview auf True. Es sollen die Cursortasten abgefangen werden. Das funktioniert auch - außer wenn eine TCheckBox-Komponente den Focus hat. Es wird dann weder im OnKeyDown der CheckBox noch im Formular ein Ereignis ausgelöst, sondern nur die nächste Komponente angesprungen. Wer kennt das Phänomen und kennt eine Möglichkeit, hier trotzdem die Cursortasten abzufangen? Danke im Voraus LuKa |
Re: TCheckBox OnKeyDown nicht bei Cursortasten
Hallo LuKa - herzlich Willkommen in der DP :dp:
Von diesem Problem habe ich auch schon gehört, das betrifft im übrigen auch die Plus- und Minus-Taste - hab momentan noch keine Lösung parat. Eventuell könntest du ja mal versuchen, ob die Jedi-Checkbox anders reagiert. Gruß René |
Re: TCheckBox OnKeyDown nicht bei Cursortasten
Das mit den anderen Tasten ist mir gar nicht aufgefallen.
Mit den Jedi´s habe ich es auch schon probiert, leider dasselbe verhalten. :( |
Re: TCheckBox OnKeyDown nicht bei Cursortasten
Sorry, hab mich geirrt: Plus und Minus funktioniert.
Bis jetzt betrifft es nur die Cursortasten, Tab und Druck. Wäre wirklich mal interessant, wie man diese Tasten abfängt. |
Re: TCheckBox OnKeyDown nicht bei Cursortasten
Habe gerade einmal ein kleines C# Programm geschrieben und auch hier lösen die Cursortasten keinen Event aus!
Standardverhalten einer Checkbox? |
Re: TCheckBox OnKeyDown nicht bei Cursortasten
Zitat:
Irgendwie muss es doch aber möglich sein, im Programm auf die Cursortasten reagieren zu können. Das darf mir doch auch eine Checkbox nicht blockieren. |
Re: TCheckBox OnKeyDown nicht bei Cursortasten
Nee, war nur ein Einzeiler! :zwinker:
|
Re: TCheckBox OnKeyDown nicht bei Cursortasten
Ein Steuerelement bekommt nur dann die Pfeiltasten (Cursortasten) über WM_KEYxxx-Meldungen, wenn es auf die Meldung WM_GETDLGCODE den Wert DLGC_WANTARROWS oder DLGC_WANTALLKEYS zurückgibt. Ihr müsstet euch also eine eigene Klasse von TCheckBox ableiten und eine Behandlung für die Meldung WM_GETDLGCODE hinzufügen.
Beispiel:
Delphi-Quellcode:
interface
type TCheckboxWithArrowKeys = class(TCheckBox) private procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE; end; implementation procedure TCheckboxWithArrowKeys.WMGetDlgCode(var Message: TWMGetDlgCode); begin inherited; Message.Result := Message.Result or DLGC_WANTARROWS; end; |
Re: TCheckBox OnKeyDown nicht bei Cursortasten
Das werde ich gleich einmal testen. Danke.
|
Re: TCheckBox OnKeyDown nicht bei Cursortasten
@Flocke
Danke, dass war genau der Hinweis den ich benötigte. @smudo Grüße in die Nachbarschaft! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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