值的传递!
先定义公共变量,然后在另一单元中调用,我试了是可以的,但是他传递的值只可以在oncreate事件里
现在我想在form里的edit里输入的值传递到另一个单元中,如何做啊?

解决方案 »

  1.   

    另一个单元?什么意思?写在public下都可用呀
    只要你引用了这个窗体
      

  2.   

    你可以在你想要使用该值得地方,use该单元,
    直接引用,就行,
    可以使用全局变量试是,
      

  3.   

    这么可能呢?按照我下面做的呢试试

      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      temp:string;implementationuses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
     temp:=edit1.Text;
     form2.showmodal;
    end;
    。。
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementation
    uses unit1;{$R *.dfm}procedure TForm2.Button1Click(Sender: TObject);
    begin
    label1.Caption:=temp;
    end;这样就可以了
      

  4.   

    把变量定义到var下面是绝对可以的,如果你不使用这种全局变量,那么就在form1关闭之前在form2中取得这个edit的值,也可以取到的。只要你取值的时候form1没有被销毁掉,你随时都可以取得form1中edit的值。
      

  5.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }  end;var
      Form1: TForm1;
      temp:string;
    implementationuses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
       temp:=edit1.Text;
       form2.ShowModal;
    end;end.
    ==================================
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm2 = class(TForm)
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementation{$R *.dfm}
         uses unit1;
    procedure TForm2.FormCreate(Sender: TObject);
    begin
        edit1.Text:=temp;
    end;end.
    =======================
    这样为什么取不到值啊?
      

  6.   

    改为:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
         temp:string;  //这  end;var
      Form1: TForm1;
    implementationuses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
       temp:=edit1.Text;
       form2.ShowModal;
    end;end.
    ==================================
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm2 = class(TForm)
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementation{$R *.dfm}
         uses unit1;
    procedure TForm2.FormCreate(Sender: TObject);
    begin
        edit1.Text:=TForm1.temp;
    end;end.
      

  7.   

    楼上的
    谢谢
    这个定义全局我试了,但是效果是一样的!
    edit里没有值!!!!!!!!!!!!!!!!!!!!!!!!
      

  8.   

    你的意思是不是要把填入当前窗体中的Edit的数据实时传递到另一个窗体的变量中去啊?在Edit的OnChange事件中写:if Assigned(From2) then
      From2.变量名:= Edit1.text;
      

  9.   

    先Use要传递值的单元..
       然后写上要要传递值单元函数据或过程...send(edit1.text);
       就行啦...
      

  10.   

    我的意见:
      单元之间的相互引用容易引起混淆。我一直是这样:专门设一个单元列出全局变量,在有些时候,我还专门写一个全局变量类,这样一些变量的初始化和一些临时的操作编会非常方便。
    例如这样Unit VarUnit                 //在这个单元中定义各全局变量interfaceVar
      Temp:String;implementationend.
    ==================================unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }  end;var
      Form1: TForm1;
      temp:string;
    implementationuses 
      VarUnit,Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
       temp:=edit1.Text;
       form2.ShowModal;
    end;end.
    ==================================
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm2 = class(TForm)
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementation{$R *.dfm}
     
        uses VarUnit;
    procedure TForm2.FormCreate(Sender: TObject);
    begin
        edit1.Text:=temp;
    end;=================================
    这样肯定没有问题,而且避免了窗体之间相互引用的混乱,对程序设计和维护有益。end.