Q&A

  • 버튼 동적생성시 이벤트 주기~~~
안녕하세여 꾸벅~~ 왕처버 입니다.



버튼을 동적생성으로 만드는 것까쥐는 했씁니다.

밑에가 동적생성으로 만든 버튼을 클릭했을때 이벤트가 일어나게 하는 것입니다.

그런데 동적으로 버튼을 계속생성하묜 클릭이벤트가 모두 밑에 걸루 뜹니다.



procedure TForm1.btneventClick(Sender: TObject);

begin

showmessage('성공했습니다~~~ 행님~~!');

end;



동적으로 몇개의 버튼을 만들어도 다른 이벤트를 주고 싶은데 어떻게 하묜 될까여??



알고 계신분은 꼭 답변해주세여~~~





3  COMMENTS
  • Profile
    이경문 2000.09.09 02:31
    동적으로 생성되는 객체의 OnClick이라는 Property를 설정해 주시면 됩니다.

    단, OnClick Property는 TNotifyEvent의 타입을 가져야 됩니다.

    Button은 지역변수로 해도 되지만 TForm1의 Class에서 관리하시는 것이 바람직합니다(폼이 종료될 때 Button객체의 해제가 자동으로 되지만 프로그램에서 해제를 해주는 것이 좋으므로).



    --- 생성방법 ---



    begin

    Button := TButton.Create(Self);

    Button.Parent := Self;

    Button.Caption := '눌러봐';

    Button.OnClick := MyButtonClick;

    end;



    --- 프로시저 선언 ---

    TForm1의 private에 다음과 같은 프로시저를 선언해 주십시오.



    private

    { Private declarations }

    procedure MyButtonClick(Sender: TObject);

    ...



    --- 프로시저 정의 ----



    procedure TForm1.MyButtonClick(Sender: TObject);

    begin

    ShowMessage('동적 생성에 대한 클릭 이벤트입니다');

    end;





    왕초보 wrote:

    > 안녕하세여 꾸벅~~ 왕처버 입니다.

    >

    > 버튼을 동적생성으로 만드는 것까쥐는 했씁니다.

    > 밑에가 동적생성으로 만든 버튼을 클릭했을때 이벤트가 일어나게 하는 것입니다.

    > 그런데 동적으로 버튼을 계속생성하묜 클릭이벤트가 모두 밑에 걸루 뜹니다.

    >

    > procedure TForm1.btneventClick(Sender: TObject);

    > begin

    > showmessage('성공했습니다~~~ 행님~~!');

    > end;

    >

    > 동적으로 몇개의 버튼을 만들어도 다른 이벤트를 주고 싶은데 어떻게 하묜 될까여??

    >

    > 알고 계신분은 꼭 답변해주세여~~~

    >

    >

  • Profile
    왕초보 2000.09.09 03:13
    저도 거기까지는 할수 있습니다.



    그런데 버튼을 동적으로 3개를 만들구(몇개를 만들지는 모름 여기선 예로 3개임) 3개를 다 다른 코딩을 주고 싶습니다. 그런 프로시저들을 3개를 만들어서 코딩을 한다고 치면 3개를 초과하묜 이벤트가 일어나지 않잖아여 그렇쩌



    그래서 몇개의 버튼을 만들던 이벤트를 버튼 갯수대로 이벤트를 만들어 주는 것입니다.

  • Profile
    이경문 2000.09.09 03:43
    생성되는 버튼마다 어떤 다른 이벤트를 말씀하시는 건가요?

    이벤트의 성격이 전혀 다르다면 당연히 프로시저를 갯수만큼 만들어야 할 것이고

    비슷하다면 Sender를 이용하는 방법이 있는데.....

    초과했을 때 이벤트가 일어나지 않는 다는 것도 이해가 안되네여.....

    객체를 생성하는 것은 런타임때 가능하지만 Method를 추가한다는 것은 컴파일때 하는 거지 런타임때 하는 것은 아니지여.....



    왕초보 wrote:

    > 저도 거기까지는 할수 있습니다.

    >

    > 그런데 버튼을 동적으로 3개를 만들구(몇개를 만들지는 모름 여기선 예로 3개임) 3개를 다 다른 코딩을 주고 싶습니다. 그런 프로시저들을 3개를 만들어서 코딩을 한다고 치면 3개를 초과하묜 이벤트가 일어나지 않잖아여 그렇쩌

    >

    > 그래서 몇개의 버튼을 만들던 이벤트를 버튼 갯수대로 이벤트를 만들어 주는 것입니다.