Q&A

  • TreeView에서 선택한 node의 Form을 실행하려면..
도움바랍니다.

저는 TreeView를 이용 간단한 응용프로그램 메뉴화면을 만들려고함미다.

일반적으로 운영되는 화면의 Form은 MDIChilc 와 Normal type 으로 되어있는데..

노드를 클릭하면 해당 Form Name을 찾았으나.. 실행방법을 알지못하고 있읍니다.

...

제발 도움을 주십시오.



참고로



var node_name : String

begin

node_name := 'F_CODE01001';

을 했을때 아래와 같이 node_name을 이용 실행방법을 부탁드립니다.



--------<< 아래 >>------

F_CODE01001 := TF_CODE01001.Create(APPLICATION);

F_CODE01001.SHOW;



그럼 많은 고수님의 좋은 가르침을 기다리겠슴미다.

...

항상 활기찬 날이 되십시오.



6  COMMENTS
  • Profile
    최용일 2001.05.18 02:51
    안녕하세요. 최용일입니다.



    procedure Form1.FormCreate(...);

    begin

    ......

    RegisterClass(TF_CODE01001);

    end;



    var

    node_name : String

    begin

    node_name := 'F_CODE01001';

    Application.CreateForm(TFormClass(GetClass('TF_CODE01001')), F_CODE01001);

    F_CODE01001.Show;

    end;



    ^^ 항상 즐코하세요...



    그럼 많은 고수님의 좋은



    procedure 트리뷰



    델초보 wrote:

    > 도움바랍니다.

    > 저는 TreeView를 이용 간단한 응용프로그램 메뉴화면을 만들려고함미다.

    > 일반적으로 운영되는 화면의 Form은 MDIChilc 와 Normal type 으로 되어있는데..

    > 노드를 클릭하면 해당 Form Name을 찾았으나.. 실행방법을 알지못하고 있읍니다.

    > ...

    > 제발 도움을 주십시오.

    >

    > 참고로

    >

    > var node_name : String

    > begin

    > node_name := 'F_CODE01001';

    > 을 했을때 아래와 같이 node_name을 이용 실행방법을 부탁드립니다.

    >

    > --------<< 아래 >>------

    > F_CODE01001 := TF_CODE01001.Create(APPLICATION);

    > F_CODE01001.SHOW;

    >

    > 그럼 많은 고수님의 좋은 가르침을 기다리겠슴미다.

    > ...

    > 항상 활기찬 날이 되십시오.

    >

  • Profile
    델초보 2001.05.18 04:12
    procedure TF_QMAIN00000.TreeView1DblClick(Sender: TObject);

    var PGM_ID, PGM_NM : String;

    W_LEN :Integer;

    begin

    W_LEN := Length(Treeview1.Selected.Text);

    PGM_NM := 'TF_'+copy(Treeview1.Selected.Text,W_LEN-9,9);

    PGM_ID := 'F_'+copy(Treeview1.Selected.Text,W_LEN-9,9);



    에서 실행 상기의 PGM_NM 의 변수에 있는 FORM을 실행시키려고 함미다.

    ???

    자꾸 귀찬게해서 죄송함미다..



    Application.CreateForm(TFormClass(GetClass(PGM_NM)), PGM_ID);



    end;



  • Profile
    최용일 2001.05.18 04:20
    procedure TF_QMAIN00000.TreeView1DblClick(Sender: TObject);

    var PGM_ID: TForm; varPGM_NM : String;

    begin

    ......

    Application.CreateForm(TFormClass(GetClass(PGM_NM)), PGM_ID);

    end;



    델초보 wrote:

    > procedure TF_QMAIN00000.TreeView1DblClick(Sender: TObject);

    > var PGM_ID, PGM_NM : String;

    > W_LEN :Integer;

    > begin

    > W_LEN := Length(Treeview1.Selected.Text);

    > PGM_NM := 'TF_'+copy(Treeview1.Selected.Text,W_LEN-9,9);

    > PGM_ID := 'F_'+copy(Treeview1.Selected.Text,W_LEN-9,9);

    >

    > 에서 실행 상기의 PGM_NM 의 변수에 있는 FORM을 실행시키려고 함미다.

    > ???

    > 자꾸 귀찬게해서 죄송함미다..

    >

    > Application.CreateForm(TFormClass(GetClass(PGM_NM)), PGM_ID);

    >

    > end;

    >

  • Profile
    델초보 2001.05.18 04:01
    죄송함미다.

    다름이 아니라 아리의 Form name을 아는 경우가 아니라

    node_name 이란 변수에 임이의 Form name을 가지고 있는 경우을 설명 바랍니다..

    수고하십시오.





    >

    > procedure Form1.FormCreate(...);

    > begin

    > ......

    > RegisterClass(TF_CODE01001);

    -------------> 이부분이 변수인경우 즉 아래의 node_name인 경우 처리 방법??



    > end;

    >

    > var

    > node_name : String

    > begin

    > node_name := 'F_CODE01001';

    > Application.CreateForm(TFormClass(GetClass('TF_CODE01001')), F_CODE01001);

    -------------> 역시 node_name 인경우??



    > F_CODE01001.Show;

    -----------> 역시 node_name인 경우??



    > end;



  • Profile
    최용일 2001.05.18 04:22
    코드를 이해하시지 못하셨군요...



    폼의 이름을 모르더라도 그 폼이 선언되어 있는 유닛이 있을거 아닙니까? 그 유닛에 있는 폼의 클래스형을 먼저 등록하셔야 합니다.



    RegisterClass(TF_CODE01001);



    위에서 사용한거는 폼의이름이 아니라 폼의 클래스형입니다. 이거는 변수가 아닙니다.



    그리고 스트링.메소드 이러한 형태로 호출하는 구문은 존재하지 않습니다. 델파이 뿐만 아니라 다른 컴파일러도 마찬가지구요... 형변환하면 될 수도 있겠지만 아주 최악의 코드가 될겁니다.

    그 스트링을 매개체로 하여 원하는 폼의 인스턴스를 만드셔야죠... 그 인스턴스가 F_CODE01001란 변수이고요. 이것을 TForm형으로 해놓으시면 어떠한 폼도 사용할 수 있는거죠...



    var

    node_name : String

    Form: TForm;

    begin

    node_name := 'F_CODE01001';

    Application.CreateForm(TFormClass(GetClass('T' + node_name)), Form);

    Form.Show;

    end;



    델초보 wrote:

    > 죄송함미다.

    > 다름이 아니라 아리의 Form name을 아는 경우가 아니라

    > node_name 이란 변수에 임이의 Form name을 가지고 있는 경우을 설명 바랍니다..

    > 수고하십시오.

    >

    >

    > >

    > > procedure Form1.FormCreate(...);

    > > begin

    > > ......

    > > RegisterClass(TF_CODE01001);

    > -------------> 이부분이 변수인경우 즉 아래의 node_name인 경우 처리 방법??

    >

    > > end;

    > >

    > > var

    > > node_name : String

    > > begin

    > > node_name := 'F_CODE01001';

    > > Application.CreateForm(TFormClass(GetClass('TF_CODE01001')), F_CODE01001);

    > -------------> 역시 node_name 인경우??

    >

    > > F_CODE01001.Show;

    > -----------> 역시 node_name인 경우??

    >

    > > end;

    >

  • Profile
    델초보 2001.05.18 03:49
    항상 초보들의 든든한 사부로서 존재하는 최용일님 감사함미다..

    하시는 모든일이 항상 즐겁고 행복하시길 빌며

    ....

    아프로도 많은 가르침 부탁드림미다.



    델초보 드림. [^!^]