안녕하세요..어린왕자입니다..
이렇게 하면..Tab키가 인식이 안된가요?
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
BackMessage: TWndMethod;
procedure allKeyView(var Message:TMessage);
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
BackMessage:=Form1.WndProc;
Form1.WindowProc:=Form1.allKeyView; //참조의 성질을 알아라
end;
procedure TForm1.allKeyView(var Message: TMessage);
begin
if Message.Msg = WM_GETDLGCODE then Message.Result := DLGC_WANTALLKEYS
else BackMessage(Message);
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Tab then showmessage('Tab키가 눌러졌습니다');
end;
end.
DLGC_WANTALLKEYS를 DLGC_WANTTAB으로 바꾸세요...
> Form1.WindowProc:=Form1.allKeyView; //참조의 성질을 알아라
위와 같이 직접적으로 인스턴스변수를 참조하시지 마시고 아래와 같이 간접적으로
클래스를 참조하세요. 위와 같이 하시면 두개이상의 클래스를 만들때 이상동작할 수도
있습니다.
Form1.WindowProc:= allKeyView; //참조의 성질을 알아라
or
Form1.WindowProc:= Self.allKeyView; //참조의 성질을 알아라
^^ 항상 즐코하세요.
어린왕자 wrote:
> 안녕하세요..어린왕자입니다..
> 이렇게 하면..Tab키가 인식이 안된가요?
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> StdCtrls;
>
> type
> TForm1 = class(TForm)
> procedure FormCreate(Sender: TObject);
> procedure FormKeyDown(Sender: TObject; var Key: Word;
> Shift: TShiftState);
> private
> BackMessage: TWndMethod;
> procedure allKeyView(var Message:TMessage);
>
> { Private declarations }
> public
> { Public declarations }
> end;
>
> var
> Form1: TForm1;
>
> implementation
>
> {$R *.DFM}
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> BackMessage:=Form1.WndProc;
> Form1.WindowProc:=Form1.allKeyView; //참조의 성질을 알아라
> end;
>
> procedure TForm1.allKeyView(var Message: TMessage);
> begin
> if Message.Msg = WM_GETDLGCODE then Message.Result := DLGC_WANTALLKEYS
> else BackMessage(Message);
> end;
>
> procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
> Shift: TShiftState);
> begin
> if Key = vk_Tab then showmessage('Tab키가 눌러졌습니다');
> end;
>
> end.
>