动态创建form,把要传递的数据作为他的字段

解决方案 »

  1.   

    可以使用form的showmodel的方式,模式窗口可以返回一个值result。
      

  2.   

    在Form1的Public段内加变量如var1
    在Form2中Uses Form1, 就可以使用 Form1.Var1
      

  3.   

    TO:BS and maolixwl
    举例说明好吗!在线等待。
      

  4.   

    只要在form1的interface中声明一下,在form2中“uses form1”就可以使用了
    piip
      

  5.   

    如果是主窗口和子窗口的关系,则可以使用递规调用的方式来传递参数。
    一个窗口在uses中加入窗体pas的名字,另一个窗口在implementation后加入一个uses,并在这个uses中加入前一个窗体pas的名字
    后一个为主窗体,前一个为子窗体
      

  6.   

    可以直接使用   要控制的窗体.控件.属性或事件。
    再就是是外部程序的调用,需要用到sendmessage或postmessage
      

  7.   

    在Form.create 的时候完成,当然,需要修改 Create(Params)
      

  8.   

    最不好的办法:
      每个单元互访单元全局对。
      像
       Unit1.Form1.edit1.Text
       Unit2.Form2.Edit1.Text
      这样。VCL的做法:
    设:
      Form2要访问Form1的过程,或属性
      Form2是依赖于Form1的对象。
    1:
    procedure TForm1.GetSome;
    begin
      with TForm2.Create(Self) do
      try
        if ShowModal = mrOK then
        begin
          Self.Param := Param;
          ...
        end;
      finally
        Free;
      end;
    end;2:
    procedure TForm1.GetSome;
    begin
      if not Assigned(FForm2) then
      begin
        FForm2 := TForm2.Create(Self); 
        FForm2.OwnerForm := Self;
        //FForm2.DateField := Query1.FieldByName('date');//传指针对象
      end;
      FForm2.Show;
    end;procedure TForm2.OnClose;
    begin
      FOwnerForm.Param := Param;
      //or Call FOwnerForm.SomeProcdure(Param);
      // if not (DateField.DateSet.State in [dsEdit, dsInsert]) then
      //   DateField.DataSet.Edit;
      // DateField.AsDateTime := Date1.Date;
    end;
      

  9.   

    在Form内定义属性即可很方便的传递参数。
    Form1中private
      FSenderString: String;
    public
      property SenderString: String read FSenderString write FSenderString;...
      FSenderString:='****'; //赋值
    ...
    Form2中引用Form1的单元...
    var
      S: String;
    begin
      S:=Form1.SenderString;end;
    ...
      

  10.   

    分别在Form1和Form2的单元文件中引用对方的.pas,一个放在interface里,一个放在implementaion里
      

  11.   

    //in TForm2's unit
    unit ...interfaceuses
      ...type
      TForm2=class(TForm)
        ...
      private
        FParam: string;
        procedure DoSomething;
      public
        constructor Create(AOwner: TComponent; AParam: string); reintroduce;
      end;implementationTForm2.Create(AOwner: TComponent; AParam: string);
    begin
      FParam := AParam;
    end;procedure TForm2.DoSomething
    begin
      if FParam <> '' then
        //Do something here
    end;//In TForm1's unit
    //Calls TForm2
    procedure TForm1.Test;
    var
      Param: string;
    begin
      //Set Param's value
      with TForm2.Create(Application,Param) do
      try
        ShowModal;
        //Other processes here
      finally
        Free;
      end;
    end;