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 KeyDown reagiert auf vk_next aber nicht auf vk_down... (https://www.delphipraxis.net/72446-keydown-reagiert-auf-vk_next-aber-nicht-auf-vk_down.html)

Der_Ventilator 30. Jun 2006 11:06


KeyDown reagiert auf vk_next aber nicht auf vk_down...
 
Also der Titel sagt schon, dass meine Komponente zwar auf vk_next (bild ab) reagiert, aber nicht auf vk_down.
Warum? Was ist an der Taste anders?

Delphi-Quellcode:
type
  Tgliste2 = class(TCustomControl)
...

procedure Tgliste2.KeyDown (var Key: Word; Shift: TShiftState);
begin
  inherited;
   
  //Komponente kriegt sonst keinen Focus
   if not focused then
   begin
     parent.Setfocus;
     self.SetFocus;
   end;

  if assigned(OnKeyDown) then OnKeyDown(key,Shift);


  case key of
    vk_up  : Runterscrollen;
    vk_down : Raufscrollen;
    vk_next : Runterscrollen;
    vk_prior: Raufscrollen;
  end;
end;

dataspider 30. Jun 2006 11:19

Re: KeyDown reagiert auf vk_next aber nicht auf vk_down...
 
Hi,

vielleich wird ja im OnKeyDown die Variable Key auf 0 gesetzt (Übergabe als Var).

Cu, Frank

Sidorion 30. Jun 2006 11:33

Re: KeyDown reagiert auf vk_next aber nicht auf vk_down...
 
Du musst WM_GETDLGCODE abfangen, und zum geerbten Ergebnis DLGC_WANTARROWS hinzufügen. Das geht aber glaub ich erst ab TWinControl.
Wenn DLGC_WANTARROWS nicht im Ergebnis dieser Windowsnachricht steht, sendet Windows die Arrow Keys erst garnicht an dieses Handle.

SirThornberry 30. Jun 2006 12:06

Re: KeyDown reagiert auf vk_next aber nicht auf vk_down...
 
@Sidorion: Wie du bereits geschrieben hast geht das erst ab TWinControl. Tcontrol etc. braucht das auch nicht können weil dies keinen Focus erhalten kann und somit auch keine KeyMessages etc. erhält.

Sidorion 30. Jun 2006 13:05

Re: KeyDown reagiert auf vk_next aber nicht auf vk_down...
 
dann kriegt er aber auch kein vk_next. Hab grad nopchmal gekuckt, TCustomControl leitet von TWinControl ab. Da sollte es so gehen.

Der_Ventilator 6. Jul 2006 18:47

Re: KeyDown reagiert auf vk_next aber nicht auf vk_down...
 
Nach dem Einbinden von
Delphi-Quellcode:
procedure WMGetDlgCode(var Msg: TMessage); message WM_GETDLGCODE;

procedure Tgliste2.WMGetDlgCode(var Msg: TMessage);
begin
  inherited;
  Msg.Result := Msg.Result or DLGC_WANTARROWS;
end;
(Quelle Delphi Source)

funktionieren nun auch die Pfeiltasten.

Danke.


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