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;