可是这样以来,会弹出一个form1的界面,怎样做才可以使用form1的button1.click,又不弹出from1的界面?
  我使用了一个方法:
  procedure TForm2.Button1Click(Sender: TObject); 
  begin
    Application.CreateForm(TForm1, Form1);
    Form1.SendToBack;
    Form1.Button1.Click; //会产生在form2中需要的数据
    将从form1中得到的数据进行处理;//具体命令省略
    Form1.Close;
  end;
  这样运行下来,固然可以解决问题,但是在点击form2的Button1时,会产生闪屏。
  怎样才能够更好的解决问题?
  谢谢

解决方案 »

  1.   

    楼主我试验了一下没有发现闪屏,看是不是你Form1.Button1.Click事件中的代码有问题,如果可以贴出来。
      

  2.   

    不用创建也可以吧,你在form2中引用form1窗体
    然后调用
    Form1.Button1Click(Sender);
      

  3.   

    我说的闪屏意思是点击form2的Button1时,form1打开,然后关闭,在整个form2界面显示的状
    态是屏幕抖动了一下,感觉不太自然.不知道Bear_hx是不是这样的效果?对不起,没有表达清楚:(to fly_mouse:
    如果不创建form1,调用 Form1.Button1Click(Sender);那么在运行状态下点击form2的Button1会运行错误,弹出
    我只是把unit1加入到unit2的uses中,还有其他地方要改动的吗?你说的"引用form1窗体" ,在程序上怎样操作?谢谢:)
      

  4.   

    改一下方法 procedure   TForm2.Button1Click(Sender:   TObject);   
        begin 
            Form1 := TForm1.Create(Nil);
            Form1.Button1.Click;   //会产生在form2中需要的数据 将从form1中得到的数据进行处理;//具体命令省略 
             Form1.Close; 
        end; 不过这种方法实在很差劲,新闻用语就叫粗暴干涉别国内政,设计用语就叫高耦合
      

  5.   

    不创建Form1当然出错了(运行时)。一般不要直接调用别的Form上的控件,应该由Form提供函数来供调用完成一定的功能。简单说就是,如果我以后不用那个控件,那么你全部直接调用这个控件的Form都要修改了。
      

  6.   

    楼主的代码在设计上存在着Form1和Form2之间耦合过紧的问题,建议楼主将Form1中的Button1的处理代码独立出来,让Form1和Form2都调用这段独立出来的过程(或函数)即可。
      

  7.   

     
    procedure   TForm2.Button1Click(Sender:   TObject);   
    begin 
      Application.CreateForm(TForm1,   Form1); 
      Form1.SendToBack; 
      Form1.Button1.Click;  
      Form1.Close; 
    end; 建议代码改成procedure   TForm2.Button1Click(Sender:   TObject); 
    var
      Frm1: TForm1;  
    begin 
      Frm1 := TForm1.Create(nil);
      try
        Frm1.Button1.Click;  
      finally
        Frm1.Free;
      end;
    end;窗体只要不调用Show或ShowModal是不会显示的。
      

  8.   

    设计TForm1时,将Visible = False,那么TForm1.Create(nil)就不会闪动
    一般用Form1.Hide替代Form1.SendToBack好些