unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    aaa : String;
  end;var
  Form1: TForm1;implementation
uses Unit2,Unit3;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
        F2:TForm2;begin
        F2:=Tform2.create(nil);
        F2.show;
end;end.
unit Unit2;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm2 = class(TForm)
    Edit1: TEdit;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    a:String;
  end;var
    Form2:Tform2;
implementationuses Unit1,Unit3;
{$R *.dfm}procedure TForm2.Button2Click(Sender: TObject);
var
        form3:TForm3;
begin
        Form3:=TForm3.Create(self);
        Form3.Show;
end;end.
unit Unit3;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm3 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form3: TForm3;implementationuses Unit2;{$R *.dfm}procedure TForm3.Button1Click(Sender: TObject);
begin
        form2.Edit1.Text := form3.Edit1.text;
        form2.a := form3.edit1.text;
end;end.

解决方案 »

  1.   

    你是怎么创建的?如果变量在form的public里声明,可以用form2.变量名引用~~~~~似乎不应该有问题
      

  2.   

    底下是代码:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        aaa : String;
      end;var
      Form1: TForm1;implementation
    uses Unit2,Unit3;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
            F2:TForm2;begin
            F2:=Tform2.create(nil);
            F2.show;
    end;end.
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm2 = class(TForm)
        Edit1: TEdit;
        Button2: TButton;
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        a:String;
      end;var
        Form2:Tform2;
    implementationuses Unit1,Unit3;
    {$R *.dfm}procedure TForm2.Button2Click(Sender: TObject);
    var
            form3:TForm3;
    begin
            Form3:=TForm3.Create(self);
            Form3.Show;
    end;end.
    unit Unit3;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm3 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form3: TForm3;implementationuses Unit2;{$R *.dfm}procedure TForm3.Button1Click(Sender: TObject);
    begin
            form2.Edit1.Text := form3.Edit1.text;
            form2.a := form3.edit1.text;
    end;end.
      

  3.   

    现在在form1中点一个button,动态创建form2
    var
      myform2 :TForm2;  myform2 :=TForm2.Create(nil); 
      
    点form2的一个button,动态创建form3
    var
      myform3 :TForm3;  myform3 :=TForm3.Create(nil); 
      
    在form3中要调用或者修改form2中声明的一个public变量
    因为form2与form3要进行单元互调,所以uses unit2,uses unit3必需放在interface部分.
      

  4.   

    在unit2的interface部分uses unit3
    在unit3的interface部分uses unit2编译无法通过
    错误:Circular unit reference to "unit2"
      

  5.   

    to yansea:
    有啊,unit3里面有uses unit2
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
            Application.CreateForm(TForm2, Form2);
            Form2.show;
    end;end.
    procedure TForm2.Button2Click(Sender: TObject);
    begin
            Application.CreateForm(TForm3, Form3);
            Form3.Show;
    end;end.
      

  7.   

    to superljj:
    试了一下,是可以执行了!可以说说这是为了什么原因呢?
    为什么会出这样的错误呢?
      

  8.   

    在form2和form3中互相调用那是肯定不对的,那会造成循环!
    ***在unit2的interface部分uses unit3
       在unit3的inplementation部分uses unit2***//表示局部引用
    这样是可以的。也可以都放在inplementation区。