Q&A

  • 탭키의 기능 바꾸기..


... 현재 탭키는 기본적으로 필드간의 이동으로 사용되는데



이것을 제가 원하는 다른 기능으로 사용하려고 하는데



어떤 Event 에서도 탭키를 잡아낼수가 없네요



어떻게 해야 되는지 도와주세요..

1  COMMENTS
  • Profile
    이정욱 1999.07.14 13:46
    쩝... 한번 해봤는데 역시 안잡히던군요.. 후후..

    하도 신기해서(?) 될때까지 해봤습니다.

    코딩은 안해주는데.. 제가 궁금해서 풀어본 해답입니다.

    아래의 코드는 TEdit을 가지고 했지만 다른 콘트롤들에서 마찬가지 입니다.



    그 콘트롤의 WinProc을 가로채서 사용합니다.



    그런데 폼위의 컴포넌트마다 해주기 짜증나니까 원하는것을 컴포넌트로 아래코드를 추가해서 만드시면 편하게 사용하실 수 있겠죠?



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls;



    type

    TForm1 = class(TForm)

    Edit1: TEdit;

    procedure FormCreate(Sender: TObject);

    procedure Edit1KeyPress(Sender: TObject; var Key: Char);

    private

    FOrg: TWndMethod;

    procedure NewWindowProc(var M: TMessage);

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    FOrg := Edit1.WindowProc;

    Edit1.WindowProc := NewWindowProc;

    end;



    procedure TForm1.NewWindowProc(var M: TMessage);

    begin

    if M.Msg = WM_GETDLGCODE then

    begin

    M.Result := DLGC_WANTTAB;

    end

    else FOrg(M);

    end;



    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

    begin

    If ord(Key) = VK_TAB then ShowMessage('!');

    end;



    end.





    박수연 께서 말씀하시기를...

    >

    > ... 현재 탭키는 기본적으로 필드간의 이동으로 사용되는데

    >

    > 이것을 제가 원하는 다른 기능으로 사용하려고 하는데

    >

    > 어떤 Event 에서도 탭키를 잡아낼수가 없네요

    >

    > 어떻게 해야 되는지 도와주세요..