Q&A

  • MainMenu관련, Form이름 관련..
1.Form1에서 Form2의 MenuItem을 Enabled := false로 주려 할때
  A. Form2.N1.Enabled := false; ====> OK N1은 메뉴아이템의 입력메뉴 이름임

  B. Form2.MainMenu1.Items[1].Enabled := false; ====> Access Error

  C. Form2:= TForm2.create(self);
     try
        MainMenu1.N1.Enabled := false;====> N1을 찾을수 없다는 컴파일에러..
     finally
        Form2.Free;
     end;

  D. str := 'N1';
     for i := 0 to Mainmenu1.Items.Count - 1 do
        if Mainmenu1.Items[i].Name = str then
           Mainmenu1.Items[i].Enabled := false;====> 해당폼에선 OK,

Form2의 메뉴아이템을 D번과 같은 방법으로 Form1에서 Enabled := false 시키고 싶습니다.
어찌해야 할까요?

2.자신의 폼 이름을 알수 있는 방법이 있나요?
  버튼을 Click하면 ShowMessage('나의 폼이름은 Form1입니다');
                   ShowMessage('나의 폼 Caption은 XXXXX 입니다');
  알 수 있을까요?
3  COMMENTS
  • Profile
    아폴론 2003.03.15 19:30

    D번과 같은 방법으로 메인폼에서 프로그램내 모든폼의 메뉴를
    컨트롤 하고 싶었는데.... 좀더 연구를 해봐야 겠군요...

    관심갖아 주셔서 정말 감사합니다.
  • Profile
    曦昇 2003.03.15 06:36
    1번질문은 예전에 게시판에서 읽었을 때 안된다고 본적이 있군요.
    2번은  
    showmessage((Sender as Tcomponent).Owner.Name);

    이렇게 해보세요.....




  • Profile
    맑은물 2003.03.15 13:20
    form1, form2 두개의 폼이 있을때
    form1 에서 form2 의 메뉴아이템 enabled := false 할수 있습니다.

    ex) form2의 메뉴의 name 이 n1 이라하면
    1. form1의 uses 절에 form2 를 추가하시고 난다음
    2. form2.n1.enabled := false;  
    //간단하죠.

    여기서 컴파일 에러가 나는 이유는
    form2 가 클래스의 인스턴스로 (객체로)
    클래서안에 MainMenu1: TMenuItem;
                     N1 이 TMenuItem;
    으로 각각 선언되 있습니다.
    접근 방식은 한가지로 하시면 됩니다. form2.Mainmunu1;
    form2.n1;