Q&A

  • Event도 runtime에 생성이 가능한가요?
예를 들어, Button을 runtime에 생성했다면,

그 클릭 이벤트는 어떻게 생성을 해야하는 지요...

desigtime에는 interface와 implementation에 코딩을 하는데,

runtime에는 어떻게 해야할지 모르겠네요...



조언 부탁드립니다.



그리고, 다음에서,



Button2 := TButton.Create(self);

Button2.Visible := TRUE;

Button2.Top := 100;

Button2.Left := 100;

Button2.Height := 100;

Button2.Width := 100;





왜 Button2가 안보이는지요?

4  COMMENTS
  • Profile
    드래곤 2001.11.13 18:13
    event는 100% 동적 생성은 불가능한걸루 알고있고요.

    미리 해당 Event에대한 함수를 만들어 놓고, 컨트롤 생성시에 연결하는 방법을 사용하세요.

    그리고 Button2가 안보이는 이유는 Parent를 설정하지 않았기 때문입니다. sample을 올립니다 참고하세요.



    unit Unit1;



    interface



    uses

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

    StdCtrls;



    type

    TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);

    procedure myClick(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    procedure TForm1.FormCreate(Sender: TObject);

    var

    Button2 : TButton;

    begin

    Button2 := TButton.Create(Application);

    Button2.Visible := TRUE;

    Button2.Top := 100;

    Button2.Left := 100;

    Button2.Height := 100;

    Button2.Width := 100;

    Button2.Parent := self;

    Button2.OnClick := myClick;

    end;



    procedure TForm1.myClick(Sender: TObject);

    begin

    showmessage('Click');

    end;

    end.

  • Profile
    버섯 2001.11.13 18:02
    훈 wrote:

    > 예를 들어, Button을 runtime에 생성했다면,

    > 그 클릭 이벤트는 어떻게 생성을 해야하는 지요...

    > desigtime에는 interface와 implementation에 코딩을 하는데,

    > runtime에는 어떻게 해야할지 모르겠네요...

    >

    > 조언 부탁드립니다.

    >

    > 그리고, 다음에서,

    >

    > Button2 := TButton.Create(self);

    > Button2.Visible := TRUE;

    > Button2.Top := 100;

    > Button2.Left := 100;

    > Button2.Height := 100;

    > Button2.Width := 100;

    >

    >

    > 왜 Button2가 안보이는지요?



    button2.parent := self;



    Event 도 런타임때 당연히 생성가능하죠 ^^



    즐코~

  • Profile
    버섯 2001.11.13 18:05
    버섯 wrote:

    > 훈 wrote:

    > > 예를 들어, Button을 runtime에 생성했다면,

    > > 그 클릭 이벤트는 어떻게 생성을 해야하는 지요...

    > > desigtime에는 interface와 implementation에 코딩을 하는데,

    > > runtime에는 어떻게 해야할지 모르겠네요...

    > >

    > > 조언 부탁드립니다.

    > >

    > > 그리고, 다음에서,

    > >

    > > Button2 := TButton.Create(self);

    > > Button2.Visible := TRUE;

    > > Button2.Top := 100;

    > > Button2.Left := 100;

    > > Button2.Height := 100;

    > > Button2.Width := 100;

    > >

    > >

    > > 왜 Button2가 안보이는지요?

    >

    > button2.parent := self;

    >

    > Event 도 런타임때 당연히 생성가능하죠 ^^

    >

    > 즐코~



    에궁 질문이 더 있었네...



    일단 click 이라는 프로시져를 만드세요



    procedure buttonclick(sender : Tobjcet);



    그런다음..



    button2.onclick := ButtonClick;하시면 되져...



    답변이 되었나여?





  • Profile
    2001.11.14 01:30
    parent개념을 모르겠네요..

    Button2 := TButton.Create(nil);

    로 생성했을 때는 parent가 어떻게 되는거죠?





    그리고, Event를 동적으로 생성할 때도,



    > 일단 click 이라는 프로시져를 만드세요

    >

    > procedure buttonclick(sender : Tobjcet);

    >

    > 그런다음..

    >

    > button2.onclick := ButtonClick;하시면 되져...



    이렇게, 미리 procedure을 만들어 놓아야 한다고 했는데,

    그렇담 어쨌던, 디자인 타임에 만들어놓고,

    Event만 할당해주는 것이 아닌가 하는 생각이 되는 군요.



    그러니까, 여러가지 event를 미리 만들어 놓고,

    할당을 runtime에 하는게 아닌가 하는 생각입니다.



    버튼 생성과도 같이, runtime에 event를 생성할 수는 없나요?



    버섯 wrote:

    > 버섯 wrote:

    > > 훈 wrote:

    > > > 예를 들어, Button을 runtime에 생성했다면,

    > > > 그 클릭 이벤트는 어떻게 생성을 해야하는 지요...

    > > > desigtime에는 interface와 implementation에 코딩을 하는데,

    > > > runtime에는 어떻게 해야할지 모르겠네요...

    > > >

    > > > 조언 부탁드립니다.

    > > >

    > > > 그리고, 다음에서,

    > > >

    > > > Button2 := TButton.Create(self);

    > > > Button2.Visible := TRUE;

    > > > Button2.Top := 100;

    > > > Button2.Left := 100;

    > > > Button2.Height := 100;

    > > > Button2.Width := 100;

    > > >

    > > >

    > > > 왜 Button2가 안보이는지요?

    > >

    > > button2.parent := self;

    > >

    > > Event 도 런타임때 당연히 생성가능하죠 ^^

    > >

    > > 즐코~

    >

    > 에궁 질문이 더 있었네...

    >

    > 일단 click 이라는 프로시져를 만드세요

    >

    > procedure buttonclick(sender : Tobjcet);

    >

    > 그런다음..

    >

    > button2.onclick := ButtonClick;하시면 되져...

    >

    > 답변이 되었나여?

    >

    >