我建了一工程project1,起初在form1上添加了很多组件以及代码,后来我又新建一form2,并在form2上添加一button键并在里面填入代码form1.visible:=true;目的是想通过form2的button控制form1的显示(form1的visible属性已先改为false,form2的visible属性true)可是我运行程序时,却发现form1仍然可见,请问是什么原因,怎么解决?拜托各位了!!

解决方案 »

  1.   

    在工程选项中的auto-create forms中移除form1,然后通过form1.show;/form1.hide;的方式来显示/隐藏form1。
      

  2.   

    ??你的FORM1是不是主窗体啊?主窗体都要显示的,动态创建窗体好了
      

  3.   

    你想在from1中调用form2,
    在button中写这个试看看
    begin
    form2:=Tform2.create(application);
    form2.show;
    end;
      

  4.   

    在Form1中引用Form2
    并定义一个Button的事件如下:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if Assigned(Form2) then
        Form2.Show;
    end;
    其目的是将form2显示出来
    在Form2中引用Form1并将其Button1的双击事件定义为如下:
    procedure TForm2.Button1Click(Sender: TObject);
    begin
      if Assigned(Form1) then
      begin
        Form1.Visible := not Form1.Visible;
      end;
    end;
    这样,Form1就可以显示和隐藏了,但有一个问题:
    由于form1为主窗体,所以当你关闭Form2时,
    整个程序并没有关闭,而你的Form1又为隐藏状态,
    所以在你关闭Form2的时候,需要将Form1显示出来定义Form2的OnClose的事件如下:
    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Form1.Visible := True;
    end;
    这样就可以了正如 naner_china(naner) 所说,楼主还是多实践,多交流
    这样进步才会快