在form2中先use form1单元名,则form2中的变量=form1.edit1.text

解决方案 »

  1.   

    这样可以吗?应该可以
    如果不可以
    定义一个全局变量
    些个小函数,在FORM2中调用这个函数,就可以了
      

  2.   

    Form2中定義一個全局變量 A﹐在Form1中來一句﹕
    Form2.A:=Edit1.Text;
      

  3.   

    最好新建一个专门放置变量的单元:unit_global;
    定义变量
    var
    s1:string;unit_global.s1:form2.edit1.text;在form2中调用就可以了。
    这样做最好。
    强烈建议用此规范。特别是大的系统。
      

  4.   

    各位的方法我都试了,还是有些问题请教。
    我说详细一些:
    做一个财务软件。
    --------------------
    1.DataModule中的qryJob中有一个房基金的计算字段Fjj。
    2.房基金字段的计算公式中有两个变量(因为房基金每年都要变)s(系数  定义为Currency类型)、per(百分比 定义为single)。
    3.此计算字段的公式在DataModule单元的OnCalcFields过程中计算。
    4.数据显示在frmTable窗体中。
    5.另想设计一个改变房基金变量的窗体frmFjj,edtS和edtPer分别输入这两个变量。
    -----------------------
    问题:
    如果在DM中将变量初始化,即使改变,每次执行后还是原来的初始值。
    如果不初始化,只是将edt的text传给变量,程序开始运行edt是空的,变量得不到值。
    ---------再帮帮忙,再加100分。
      

  5.   

    up!!!!
    $150 give you!!!
    only you give me a hand!!!
      

  6.   

    在定义Form1的地方定义一个变量,然后把值付给它,在Form2中,uses Form1的单元,然后就可以用了
      

  7.   

    我看你这段描述都快疯了!
    首先,你有一个数据模块:DataModule(简称DM)。
    其次,在这个DM中你定义了两个变量:edtS和edtPer
    再者,你想将窗体中,用户出入的变量值传递到DM中,是吗?
    解答:
    1.在DM中将变量初始化
    2.在出入变量值窗体中先use DM
    3.再将 DM.edts := ......
      

  8.   

    看这里
    //窗体1代码
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
      private
        { Private declarations }
      public
        { Public declarations }
        hehe:integer;  //这个变量
      end;var
      Form1: TForm1;implementation{$R *.DFM}end.//窗体2代码
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type
      TForm2 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementationuses Unit1;{$R *.DFM}procedure TForm2.FormCreate(Sender: TObject);
    begin
      form1.hehe:=1;  //这里就用了窗体1的变量hehe
    end;end.
    这下总该满意了吧,刚开始学DELPHI吧?是有些费劲的,过一段时间就好了
    :)
      

  9.   

    试一下数据传递的方法unit1var
      ds: TCopyDataStruct;
      hd: THandle;
    begin
      ds.cbData := Length(Edit1.Text) + 1;
      GetMem(ds.lpData, ds.cbData ); { 为传递的数据区分配内存 }
      StrCopy(ds.lpData, PChar(Edit1.Text));
      Hd := FindWindow(nil, 'Form2'); { 获得接受窗口的句柄 }
      if Hd <> 0 then
        SendMessage(Hd, WM_COPYDATA, Handle, Cardinal(@ds)) { 发送WM_COPYDATA消息 }
      else
        ShowMessage('目标窗口没找到!');
      FreeMem(ds.lpData); { 释放资源 }
    end;unit2 public
       procedure WMCopyData(var S: TWmCopyData); message WM_COPYDATA;procedure TForm2.WMCopyData(var S: TWmCopyData);
    begin
      edtS := StrPas(S.CopyDataStruct^.lpData);
    end;
      

  10.   

    全都理解错了!edtS和edtPer是两个TEdit文本框的名字!
    我想在这两个TEdit中写入值然后传到DM中的两个变量s和per中。
    s和per是在public中定义的,也可以运行,但有没有想过这是有语义错误的。如果你在DM中初始化变量后,另一窗体传来的值这次会变,但关闭程序下次再打开时又会初始化为原来的值。我要的是一直受Tedit控制的值。
      

  11.   

    DM.s := {Form1.}edtS.Text;
    DM.per := {Form1.}edtPer.Text;