Q&A

  • 동적으로 콤포넌트 제어...
procedure TForm1.Button1Click(Sender: TObject);

var

Menu : TMenuItem;

a : String;

begin

Menu := TMenu.Create(Self);

Menu.Caption := 'aaa';



MainMenu1.Items.Add(Menu);

요렇게 하면 성공인데...



a := 'Items';

MainMenu1.a.Add(MenuItem);

요런식으로 할수는 없는지요....

a 라는 변수에는 Items[0].Item[1].Items3... 등 몇개가 올지 미지수이고요...

고수님들의 한수지도바랍니다...

end;



2  COMMENTS
  • Profile
    어린왕자 2000.04.08 03:59
    공성환 wrote:

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > Menu : TMenuItem;

    > a : String;

    > begin

    > Menu := TMenu.Create(Self);

    > Menu.Caption := 'aaa';

    >

    > MainMenu1.Items.Add(Menu);

    > 요렇게 하면 성공인데...

    >

    > a := 'Items';

    > MainMenu1.a.Add(MenuItem);

    > 요런식으로 할수는 없는지요....

    > a 라는 변수에는 Items[0].Item[1].Items3... 등 몇개가 올지 미지수이고요...

    > 고수님들의 한수지도바랍니다...

    > end;



    저두 초보입니다..

    억지로라도 그렇게 하고 싶으면 서브메뉴인스턴트를 만들어서.열심히 대입하면 되죠..

    또는 포인터를 이용하는 방법두 있을거 같구요...

    엄청 손대는 게 마나지는 일이라..엄두내기가 어렵군요..

    다른 방법이 있을까요? 없을것 같은데..



    결론은 스트링을 이용해서 할수는 없구요..(a는 스트링변수잖아요.)



    저두 한때 동적 컴포넌트의 이름을 순환문으루 해서 지정하구

    그것을 그대로 쓰려구 했는데 안되더라구요..

    되면 편할텐데..



    포인터가 가장 좋은 방법인거 같네요..

    즐거운 하루되시길...

  • Profile
    조준래 2000.04.08 02:08
    공성환 wrote:

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > Menu : TMenuItem;

    > a : String;

    > begin

    > Menu := TMenu.Create(Self);

    > Menu.Caption := 'aaa';

    >

    > MainMenu1.Items.Add(Menu);

    > 요렇게 하면 성공인데...

    >

    > a := 'Items';

    > MainMenu1.a.Add(MenuItem);

    > 요런식으로 할수는 없는지요....

    > a 라는 변수에는 Items[0].Item[1].Items3... 등 몇개가 올지 미지수이고요...

    > 고수님들의 한수지도바랍니다...

    > end;

    >



    굉장히 기발한(?) 질문이군요!!! 일반적인 컴파일링 언어에서는 원칙적으로 불가능한 얘기입니다. 가능하다고 해도 위와 같이 간단한 방식으로는 불가능 하죠. (배보다 배꼽이 훨씬 더 큰..??)

    델파이에서도 물론 마찬가지입니다. 그냥 잊어버리시는게 좋을 듯..