Q&A

  • 폼에 속하는 컴포넌트 이름 알아내는 방법
여러 폼들이 있는경우 폼의 버튼을 누르면, 그 버튼이 속한 폼의 모든 컴포넌트 이름을 알수있는 방법이 있나요?



더 나아가 페이지 컨트롤의 각 페이지마다 속하는 컴포넌트의 이름을 어떻게 알 수 있을까요?



감사합니다.



4  COMMENTS
  • Profile
    허일학 2000.01.18 21:52
    김진호 wrote:

    > 여러 폼들이 있는경우 폼의 버튼을 누르면, 그 버튼이 속한 폼의 모든 컴포넌트 이름을 알수있는 방법이 있나요?

    >

    > 더 나아가 페이지 컨트롤의 각 페이지마다 속하는 컴포넌트의 이름을 어떻게 알 수 있을까요?

    >

    > 감사합니다.

    >



    다음 예제를 참고하시면 도움이 될것이라 생각 됩니다.

    매일매일 행복하시길 ..........





    unit Unit1;



    interface



    uses

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

    StdCtrls;



    type

    TForm1 = class(TForm)

    Button1: TButton;

    Edit1: TEdit;

    ListBox1: TListBox;

    procedure FormClick(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    procedure TForm1.FormClick(Sender: TObject);

    var i : integer;

    begin

    ListBox1.Clear;

    for i := 0 to form1.ComponentCount-1 do begin

    ListBox1.Items.Add(form1.Components[i].Name);

    end;

    end;



    end.



  • Profile
    김진호 2000.01.18 23:04
    폼에서는 잘 되는데 PageControl에서 실행하려면 어떻게 해야 하나요?



    PageControl에 컴포넌트를 올려 놓는다고 해서 컨테이너가 PageControl로 바뀌지 않으니까



    PageControl의 페이지 마다의 컴포넌트를 알수가 없는건가요?



    아뭏든



    begin

    for i := 0 to form1.TabSheet1.ComponentCount - 1 do

    listbox1.Items.Add(form1.Components[i].Name);

    end;



    여기에서 form1.TabSheet1.ComponentCount가 계속 '0' 이네요



    한번만 더 도움을 ...



    답변 감사합니다.

  • Profile
    허일학 2000.01.19 01:07
    김진호 wrote:

    > 폼에서는 잘 되는데 PageControl에서 실행하려면 어떻게 해야 하나요?

    >

    > PageControl에 컴포넌트를 올려 놓는다고 해서 컨테이너가 PageControl로 바뀌지 않으니까

    >

    > PageControl의 페이지 마다의 컴포넌트를 알수가 없는건가요?

    >

    > 아뭏든

    >

    > begin

    > for i := 0 to form1.TabSheet1.ComponentCount - 1 do

    > listbox1.Items.Add(form1.Components[i].Name);

    > end;

    >

    > 여기에서 form1.TabSheet1.ComponentCount가 계속 '0' 이네요

    >

    > 한번만 더 도움을 ...

    >

    > 답변 감사합니다.



    다음과 같이 해보시면 페이지컴포넌트에서 가능할것입니다.

    즐거운 시간 되시고...안되시면 다시 메일주세요...

    제가 금방 해봤는데..잘되더라구요...



    procedure TForm1.Button2Click(Sender: TObject);

    var i : integer;

    begin

    ListBox1.Clear;

    for i := 0 to Form1.PageControl1.ActivePage.ControlCount - 1 do begin

    ListBox1.Items.Add(form1.PageControl1.ActivePage.Controls[i].Name);

    end;

    end;



  • Profile
    김진호 2000.01.19 19:53
    여러 폼이 있을때 폼마다의 버튼을 누르면 함수가 있는 unit으로 가서 거기에서 함수를 사용해서 컴포넌트의 이름을 돌려받고 싶은데 ..



    FIRST.PAS :



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    form_name := 'form1.pagecontrol1.activepage';

    string1 := unit1.make(form_name);

    listbox1.items.add(string1);



    ====================================================



    SECOND.PAS :



    function make(FORM_NAME:STRING) : string;

    for i := 0 to FORM_NAME.ControlCount - 1 do

    result := FORM_NAME.Controls[i].Name;





    이렇게 하고 싶거든요.



    but ERROR!!





    그런데 잘 안돼네요 ...



    감사합니다.