您好。 有两个窗体 form1---unit1
form2---unit2
已经有:
unit1 中 在interface部分加入:unit2;
unit2 中 在implementation 部分加入: uses unit1;
也就是说: 现在两个窗体可以互相调用了,或者说可以使用对方资源了。我想请教的是: 现在在 form1,或者说是在unit1 中,可以使用unit2 中的那些资源?
假设:
type
TForm2 = class(TForm)
Label1: TLabel;
ADOConnection1: TADOConnection;
private
procedure 1;
{ Private declarations }
public
s:string;
procedure 2;
{ Public declarations }
end;
type
pcp=record
....
end;
var
Form1: TForm1;
ss: pcp; 1. “ unit1中可以使用 form2中的Label1,ADOConnection1 和public 中定义的s:string;procedure 2 ;其它不可以使用(包括非public定义 和 其它类,变量定义)“------这种说法对马?
2. var
Form1: TForm1;
ss: pcp; ----------他们的作用范围是什么? 整个程序对马? 他们可以被unit1调用马?
谢谢。
form2---unit2
已经有:
unit1 中 在interface部分加入:unit2;
unit2 中 在implementation 部分加入: uses unit1;
也就是说: 现在两个窗体可以互相调用了,或者说可以使用对方资源了。我想请教的是: 现在在 form1,或者说是在unit1 中,可以使用unit2 中的那些资源?
假设:
type
TForm2 = class(TForm)
Label1: TLabel;
ADOConnection1: TADOConnection;
private
procedure 1;
{ Private declarations }
public
s:string;
procedure 2;
{ Public declarations }
end;
type
pcp=record
....
end;
var
Form1: TForm1;
ss: pcp; 1. “ unit1中可以使用 form2中的Label1,ADOConnection1 和public 中定义的s:string;procedure 2 ;其它不可以使用(包括非public定义 和 其它类,变量定义)“------这种说法对马?
2. var
Form1: TForm1;
ss: pcp; ----------他们的作用范围是什么? 整个程序对马? 他们可以被unit1调用马?
谢谢。
还可以使用unit2中全局定义的部分
2. 是的
这就是面向对象的安全机制
另外,循环调用虽然不好,但却是可以的。只有不都在interface中uses就行。但还是尽量避免。
2、可以使用。在interface的部分定义的全局变量和全局对象对整个工程都有效,不过要建议不要使用全局变量,因为不符合oo编程的思想,尽量使用属性和接口来实现对变量的访问!