如题目所说
我在Form1的BitBtn1Click(Sender: TObject)函数中新建了Form1 Application.CreateForm(TForm2,Form2);
那么,我如何在Form1的另一个函数 DBGrid1DblClick(Sender: TObject);中修改Form2的Caption?? 

解决方案 »

  1.   

    在Form1中引用form2后,直接修改即可:
    Application.CreateForm(TForm2,Form2);
    form2.caption:='我的窗体';
      

  2.   

    楼主在Form1中,定义变量Form2时,不要在BitBtn1Click事件里定义,要把Form2定义为一个全局的变量,这样的话,你在Form1中任意一个地方都可以对它进行操作了。但操作前,别忘了对它是否存在先检测一下,否则,出现访问地址错误: if Assigned(Form2) then begin
       //操作的语句...
     end;
      

  3.   

    按上述办法定义了form2后,即可在DBGrid1DblClick的事件这样处理了:procedure TForm1.DBGrid1DblClick(Sender: TObject);
    begin
     if Assigned(Form2) then begin
       Form2.Caption:='新的标题';
     end;
    end;
      

  4.   

    得罪了(请谅!),当你连何谓全局都不懂:......var
      Form1: TForm1;implementation
    uses unit2;
    var  Form2:TForm2;//在这里定义,Form2就是全局的了。{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
     if Assigned(Form2) then begin
       //操作的语句...
     end;
    end;......end.
      

  5.   

    楼上 说的好详细啊..
    不过不要var Form2了,    uses了以后  可以直接使用 Form2
      

  6.   

    君没见,楼主:在动态建立该窗体时,要使用Form2这个变量吗?
      

  7.   

    对了  顺带提一句  
    昨天下班前想到了个笨办法
    就是声明了一个public变量 用来标记是哪个按钮的on click事件
    从而在创建窗体的Application.CreateForm(TForm2,Form2)语句后面加上了
    if action_ = 1 then
    begin
    Form4.Caption:='new Caption name';
    action_ := 0;
    end;
    来修改Form2的Caption 
      

  8.   

    如果你对同一个类(如TForm2)建立多个实例,建议看我回的另外一贴:http://topic.csdn.net/u/20111011/23/c8a86e7c-1657-4e23-a0fe-677461b9d1b9.html
      

  9.   


    在form1中引用了unit2(form2的主体),不管在form1的函数还是事件中只要执行了  Application.CreateForm(TForm2,Form2)就可以直接使用form2了。这个没有错,而且方便快捷,有时间可以试一下.....
      

  10.   


    是这样的 是因为直接use以后不好用  所以才想用public变量来标记是哪个按钮的on click事件的全局变量试了 可用~~