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.
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.
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.
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部分.
在unit3的interface部分uses unit2编译无法通过
错误:Circular unit reference to "unit2"
有啊,unit3里面有uses unit2
begin
Application.CreateForm(TForm2, Form2);
Form2.show;
end;end.
procedure TForm2.Button2Click(Sender: TObject);
begin
Application.CreateForm(TForm3, Form3);
Form3.Show;
end;end.
试了一下,是可以执行了!可以说说这是为了什么原因呢?
为什么会出这样的错误呢?
***在unit2的interface部分uses unit3
在unit3的inplementation部分uses unit2***//表示局部引用
这样是可以的。也可以都放在inplementation区。