Q&A

  • Sender 의 사용법
초보라 이해해주세요..

VCL 이벤트들은 항상 Sender를 기본 인자로 지정해두는데 Sender를 어떻게 쓰는건지 도통 모르겠어요..

예를들어 ActionList에서
액션리스트에 스트링을 보내고 싶은데 방법이 있을까요?
<!--CodeS-->
procedure TForm1.ActionList1(Sender: TObject);
begin
  Caption:=(Sender as string);
end;

procedure TForm1.Button1OnClick(Sender: TObject);
begin
  ActionList1('asdf');
end
<!--CodeE-->

그외 Sender 사용의 유용한 사례가 있다면 팁 부탁드려요..~
1  COMMENTS
  • Profile
    강두헌 2005.12.20 18:01
    쩝.. 글쎄요..
    예중에 procedure TForm1.ActionList1(Sender: TObject); 함수는 Event에 연결된 Method는 아닐거에요.. 만약 그랬다면 그 Event가 일어났을때 이상한 일이 일어났을테니까요.

    Event Method에서 Sender는 그 method를 call한 개체의 pointer입니다. 예를 들어 Button의 Click Event에 연결된 Button1Click(TObject *Sender) 이란 method가 있고 실제 Button이 눌렸을 때 이 method가 호출 되었다면 Sender는 Button1 이란 개체의 Pointer입니다.
    그래서 TButton * btnTmp := (Sender as TButton) 이런식으로 사용될 수 있는 거고요..

    저는 이 Sender를 여러 개체가 같은 Method를 같이 공유해서 사용할 경우 사용합니다. 예를 들어 Virtual Keyboard같은걸 만들경우 Button을 많이 만들게 되는데 실제 하는일은 비슷한 경우 하나의 Method를 만들고 모든 button들의 Click Event에 만들어 놓은 Method를 연결해서 어느 button이 눌리던 같은 Method가 호출되도록 합니다. 그리고 어느 button이 실제 불렀는지를 구분하기 위해서 Sender를 사용합니다.

    이해가 되었기를..