我想问一下:delphi窗体之间一般怎样传递值的?
form2是form1的子窗体,如form2.close
后form1中能否取得form2中控件的值?

解决方案 »

  1.   

    在form2定义一个公共变量,关闭前把你要返回的值赋给它
    关闭后
    aa := form2.你定义的公共变量
      

  2.   

    如果你的form2已经释放掉了,肯定是取不了值的,如果没有当然可以了
      

  3.   


    设计Form2的构造函数,其中有Var的参数变量,在Form1中调用Form2时通过该参数传回Form2中的值.  OK!!!
      

  4.   

    xybh97102(冰点) :
    form2.close
    算不算释放?
      

  5.   

    form2.close后,就不能取值了
    可以通过函数参数来传递
    在form2中定义,过程和变量
      procedure test(v1:interger,v2:string);
    begin
      form2 := Tfrom2.create(application);
      from2.pv1 := v1;
      form2.pv2 := v2;
      form2.showModal;
      form2.release;
    end;在任何调用test的地方,可以传值给form2。
      

  6.   

    form2.close后,就不能取值了,我觉得有点问题?请大家讨论。
      

  7.   

    如果form2只是close;form2仍在内存中,仍可以取值
    下例:
    程序有两个form,form1为主form有一edit
    form2有1个edit.text:=fineForm1上button2 显示Form2 Button3 close Form2
        button1使form1.edit1.text:=Form2.edit1.text
    顺序操作button2,button3,button1
    ========
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        Button2: TButton;
        Button3: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
    uses unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
    Edit1.Text:=Unit2.Form2.Edit1.Text;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
        Unit2.Form2.Show;end;procedure TForm1.Button3Click(Sender: TObject);
    begin
           Unit2.Form2.Close;
    end;end.
      

  8.   

    Close之后,窗口并没有释放掉,可以做一个试验:两个窗口,在form2中有一个Edit,如果你在Edit中输入一个字,然后关闭form2,再打开时,Edit中还是有你的那个字.这就说明了close并不是释放
      

  9.   

    我觉得这个提问有点问题。   TForm 窗体也是一个类,我记得我学DELPHI时候很长时间才将窗体做为一个类来看,是因为我我看到别人写的代码给窗体加了一个Published  我才恍然大悟。  只是CLOSE并没有释放,你看看CLOSE的源码就可以了,写个简单的例子就行。  至于如何在两个窗体中传递数据既两个类传递数据最好不要直接去访问form2的edit 。
      

  10.   

    定义你的共公变量,在关闭前,赋值给公共变量,在FREE这前,将值传给主窗体
      

  11.   

    反对共公变量,所有变量都应是在类中的Private,function,procedure 中定义的。   应通过参数传递,添加属性来解决。
      

  12.   

    我同意通过参数传递,同意ZyxIp(绝望中...)
      

  13.   

    用公用变量,或在from1的use中引用from2的单元