![]() |
Abfangen Arrow Tasten - Aber WM_GetDlgCode kommt gar nicht
Hi,
in mehreren Threads wurde hier schon das Thema Abfangen von Funktionstasten, Arrow Tasten usw. per WM_GetDlgCode diskutiert. Alles sehr schön, aber bei mir kommt trotz aller Versuche (siehe davon unten 4 Stück) diese Botschaft nirgendwo an - egal ob ich sie in einer Form oder den einzelnen Controls aufzuspüren versuche. Die Form wird ganz normal mit ShowModal angeworfen und geht auch ansonsten. Plattform ist XP (SP2) mit BDS 2006 (ComponentOne Studio Enterprise). Wer kann mir helfen? Beste Grüße
Delphi-Quellcode:
type
TOwnEdit = class(TEdit) procedure WMGetDlgCode(var msg: TWMGetDlgCode); message WM_GETDLGCODE; end; procedure TOwnPanel.WMGetDlgCode(var Msg: TWMGetDlgCode); begin //kommt nicht an inherited; Msg.Result := Msg.Result or DLGC_WANTARROWS or DLGC_WANTTAB; end; ODER -------------------- type TOwnPanel = class(TPanel) procedure WMGetDlgCode(var Msg: TWMGetDlgCode); message WM_GETDLGCODE; end; procedure TOwnEdit.WMGetDlgCode(var msg: TWMGetDlgCode); begin //kommt nicht an inherited; msg.Result := msg.Result or DLGC_WANTTAB or DLGC_WANTARROWS; end; ODER -------------------- TEditFitParamForm = class(TForm) procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE; procedure TEditFitParamForm.WMGetDlgCode(var Message: TWMGetDlgCode); begin //kommt nicht an inherited; Message.Result := Message.Result or DLGC_WANTTAB or DLGC_WANTARROWS; end; ODER -------------------- TEditFitParamForm = class(TForm) ... procedure MyOwnWindowProc(var Message: TMessage); procedure TEditFitParamForm.FormCreate ... OldWindowProc:=WindowProc; WindowProc:=MyOwnWindowProc; procedure TEditFitParamForm.MyOwnWindowProc(var Message: TMessage); var debug:integer; begin Message.Result:=0; if Message.Msg = wm_size then //kommt an begin debug:=1; end; if Message.Msg = WM_GetDlgCode then //kommt nicht an begin debug :=1; end; //send everything to OldWindowProc OldWindowProc(Message); end; |
Re: Abfangen Arrow Tasten - Aber WM_GetDlgCode kommt gar nic
Moin Steamengine,
erst einmal herzlich willkommen hier in der Delhpi-PRAXiS. Wie, das kommt nicht an? Wenn ich mal Deinen Code für TOwnEdit per Copy&Paste verwende, und dann noch folgendes hinzufüge:
Delphi-Quellcode:
Erhalte ich immer die Meldung 'TAB', wenn das dynamisch erzeugte Editfeld den Fokus hat, und ich Tab drücke.
procedure TForm1.FormCreate(Sender: TObject);
begin with TOwnEdit.Create(self) do begin Parent := self; OnKeyDown := Edit1KeyDown; end; end; procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if KEY = VK_TAB then ShowMessage('TAB'); end; |
Re: Abfangen Arrow Tasten - Aber WM_GetDlgCode kommt gar nic
Ja, danke für die Ideen.
Ich habe den Panels nicht genug Beachtung geschenkt. wm_GetDlgCode muß im Parent des betroffenen Controls abgefangen werden - und da waren zwischen der Form und meinem Control eben die Panels dazwischen. Also jetzt ist das ok. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23: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-2025 by Thomas Breitkreuz