Q&A

  • 여러 이벤트를 하나로 묶어서 처리 하려면
여러 이벤트를 하나로 묶어서 처리하려면 어떻게 해야 되나요?



일테면 에디트의 onclick, keydown, keypress의 세가지 이벤트의 각각의 코딩을 하였는데



일일이 에이트마다 써주어야 하니까 너무 번거롭더라구요...



예를 들면 다음과 같습니다.



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

begin

if key <> #8 then key := #0; //back space

end;



procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key <> 46 then key := 0;

end;



procedure TForm1.Edit1Click(Sender: TObject);

begin

edit1.SelectAll;

end;



위의 세가지를 프로시져나 그밖의 방법으로 한번에 처리할수는 없나요???

1  COMMENTS
  • Profile
    최용일 2000.04.07 07:49
    안녕하세요. 최용일입니다.



    먼저 각각의 이벤트(OnClick, OnKeyDown, OnKeyPress)를 하나씩만 만듭니다. 그리고



    폼상에서 Shift키를 눌러서 같은 이벤트를 가지게 될 에디트를 모두선택합니다. 그리고



    오브젝트 인스펙터의 이벤트 탭에서 위에서 만든 세가지 이벤트를 설정하시면



    선택한 모든 에디트에서 똑같은 이벤트를 사용하실 수 있습니다.



    에티드박스를 참조하는 이벤트에서는 Edit1, Edit2이런식으로 직접적으로 참조하시지



    마시고 Sender파라매터를 이용하세요...



    procedure TForm1.Edit1Click(Sender: TObject);

    begin

    (Sender as TEdit).SelectAll; // Sender파라매터를 이용

    end;



    ^^



    김진호 wrote:

    > 여러 이벤트를 하나로 묶어서 처리하려면 어떻게 해야 되나요?

    >

    > 일테면 에디트의 onclick, keydown, keypress의 세가지 이벤트의 각각의 코딩을 하였는데

    >

    > 일일이 에이트마다 써주어야 하니까 너무 번거롭더라구요...

    >

    > 예를 들면 다음과 같습니다.

    >

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

    > begin

    > if key <> #8 then key := #0; //back space

    > end;

    >

    > procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;

    > Shift: TShiftState);

    > begin

    > if key <> 46 then key := 0;

    > end;

    >

    > procedure TForm1.Edit1Click(Sender: TObject);

    > begin

    > edit1.SelectAll;

    > end;

    >

    > 위의 세가지를 프로시져나 그밖의 방법으로 한번에 처리할수는 없나요???