여러 이벤트를 하나로 묶어서 처리하려면 어떻게 해야 되나요?
일테면 에디트의 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;
위의 세가지를 프로시져나 그밖의 방법으로 한번에 처리할수는 없나요???
먼저 각각의 이벤트(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;
>
> 위의 세가지를 프로시져나 그밖의 방법으로 한번에 처리할수는 없나요???