Q&A

  • 동적생성한 콘트롤에서 이벤트를 받고 싶습니다.
고수님들 부탁합니다...폼위에 Tshape콘트롤을 동적으로 생성하였는데

그 동적으로 생성된 콘트롤을 클릭해서 이벤트를 받으려하니

망막합니다 도와주세여 TT

3  COMMENTS
  • Profile
    강인규 2000.01.27 19:50
    폼에는 findecomponent라는 함수가 있습니다 아래의 예제를 참고하세요.

    이건 동적으로 생성시킨 에디트를 커서를 이용해서 아래위로 혹은 옆으로 제어하는 소스인데요. 저의 BBS에 가심 풀소스가 있으니 참고하셔도 됩니다. 글구 회원이 한명도 없으니 가입하셔도 좋습니다. ^.^;; <--- 허걱~



    http://nest.dvvb.com/inno76



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

    Shift: TShiftState);

    var

    i,j : integer;



    begin

    i := 1;

    if key = vk_right then begin

    selectnext(activeControl as Twincontrol,true,true);

    repeat

    with (FindComponent('edit'+inttostr(i)) as Tedit) do begin

    if Focused = true then begin

    form3.Label3.Caption := inttostr((taborder mod y)+1);

    form3.Label4.Caption := inttostr((taborder div x)+1);

    exit;

    end;

    i := i+1;

    end;

    until (i = x*y+1)

    end;



    if key = vk_left then begin

    repeat

    with (FindComponent('edit'+inttostr(i)) as Tedit) do begin

    if taborder >= 1 then begin

    if Focused = true then begin

    TabOrder := TabOrder-1;

    form3.label3.Caption := inttostr((TabOrder mod y)+1);

    form3.Label4.Caption := inttostr((taborder div x)+1);

    selectnext(activeControl as Twincontrol,true,true);

    TabOrder := TabOrder+1;

    exit;

    end;

    end;

    i := i+1;

    end;

    until (i = x*y+1)

    end;



    if key = vk_up then begin

    repeat

    with (FindComponent('edit'+inttostr(i)) as Tedit) do begin

    if Focused = true then begin

    if Taborder > y-1 then begin

    TabOrder := TabOrder-y;

    form3.label3.Caption := inttostr((TabOrder+1) mod y);

    form3.Label4.Caption := inttostr((taborder div x)+1);

    selectnext(activeControl as Twincontrol,true,true);

    TabOrder := TabOrder+y;

    exit;

    end;

    end;

    i := i+1;

    end;

    until (i = x*y+1)

    end;





    if key = vk_down then begin

    i := 1;

    repeat

    with (FindComponent('edit'+inttostr(i)) as Tedit) do begin

    if Focused = true then begin

    if taborder < y * (x-1)+1 then begin

    TabOrder := TabOrder+y-1;

    form3.label3.Caption := inttostr(((TabOrder+1) mod y)+1);

    form3.Label4.Caption := inttostr((taborder div x)+1);

    selectnext(activeControl as Twincontrol,true,true);

    TabOrder := TabOrder-y+1;

    exit;

    end;

    end;

    end;

    i := i+1;

    until (i = x*y+1)

    end;

    end;



    초보자 wrote:

    > 고수님들 부탁합니다...폼위에 Tshape콘트롤을 동적으로 생성하였는데

    > 그 동적으로 생성된 콘트롤을 클릭해서 이벤트를 받으려하니

    > 망막합니다 도와주세여 TT

  • Profile
    송종영 2000.06.30 10:54
    Focus를 받을 수 있는 콘트롤을 생성하고(Speedbutton은 안됨)

    이벤트를 받으려면 이렇게 하면 됩니다.



    if (Controls[i] as TWinControl).Focused then

    begin

    이벤트 처리

    end



    여러개를 생성하였을 때 처음생성된 것이 1,2,3 .... 이런 식으로



    이 것 찾을려고 몇 시간 고생했네요!



    그럼, 좋은 코딩하세요.





  • Profile
    송종영 2000.06.30 10:53
    Focus를 받을 수 있는 콘트롤을 생성하고(Speedbutton은 안됨)

    이벤트를 받으려면 이렇게 하면 됩니다.



    if (Controls[i] as TWinControl).Focused then

    begin

    이벤트 처리

    end



    여러개를 생성하였을 때 처음생성된 것이 1,2,3 .... 이런 식으로



    이 것 찾을려고 몇 시간 고생했네요!



    그럼, 좋은 코딩하세요.