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 TCheckBox OnKeyDown nicht bei Cursortasten (https://www.delphipraxis.net/93854-tcheckbox-onkeydown-nicht-bei-cursortasten.html)

luka 12. Jun 2007 12:51


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

smudo 12. Jun 2007 13:32

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é

luka 12. Jun 2007 13:37

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. :(

smudo 12. Jun 2007 13:52

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.

luka 12. Jun 2007 14:11

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?

smudo 12. Jun 2007 14:22

Re: TCheckBox OnKeyDown nicht bei Cursortasten
 
Zitat:

Zitat von luka
Habe gerade einmal ein kleines C# Programm geschrieben

Bestimmt ein 2-Zeiler? :lol: Kleiner Insider-Witz :lol:

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.

luka 12. Jun 2007 14:29

Re: TCheckBox OnKeyDown nicht bei Cursortasten
 
Nee, war nur ein Einzeiler! :zwinker:

Flocke 12. Jun 2007 16:20

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;

luka 12. Jun 2007 16:42

Re: TCheckBox OnKeyDown nicht bei Cursortasten
 
Das werde ich gleich einmal testen. Danke.

luka 13. Jun 2007 10:08

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 02:00 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