请问:怎样定义及使用可供project中各个Form都共用的内存变量?(100分)

  • 主题发起人 主题发起人 czdd
  • 开始时间 开始时间
C

czdd

Unregistered / Unconfirmed
GUEST, unregistred user!
比如用户登陆系统后将其代码、姓名放在公用内存变量中,以后各个from都可调用他们?
 
new unit 将变量放在里面就可以了
 
补充:然后在每个需要公共变量的Form里uses这个unit。^o^
 
直接新建一个什么都没有的unit就行了。
 
TO CZDD:
可以在一个窗体的PUBLIC 里声明,其他窗体调用就行了
 
开一个公用单元,然后在里面写就是了.
 
定义我知道,可怎样调用呢?
比如在unit1 的public中定义:
public
aa:string;
在unit2中 有uses Unit1
可这就出错了:

procedure TForm2.FormCreate(Sender: TObject);
begin
aa:='sdfsdf';
end;
说是aa没定义呢!
 
如果放在public里,可以这样用
procedure TForm2.FormCreate(Sender: TObject);
begin
Form1.aa:='sdfsdf';
end;


 
写在Unit中interface之下,implementation之上即可
 
来自zhhc的回答:

如果放在public里,可以这样用
procedure TForm2.FormCreate(Sender: TObject);
begin
Form1.aa:='sdfsdf';
end;
可是如果aa的定义是在一个没有form的unit中呢,又怎样调用?

有没有更好的办法?谢谢!
 
定义成窗体级变量就可以了。
既和窗体的定义放到一起。其他窗体都可以访问
unit;
class=
...
public
end;

var
form1: Tform1;
aa: string;
 
公共单元如下:
unit PublicUnit;

interfact

var
MyPublicVar: Integer;

...
end;

调用方法在实现部分加入如下uses子句,然后你在这个单元就可以随便使用了。

uses
PublicUnit;

procedure TForm1.FormCreate(Sender: TObject);
begin
MyPublicVar := 1;
...
end;
 
总结一下:
方法一、定义在PUBLIC部分,不过在其他单元引用的时候要加上窗体的名字,示例如下:
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
public
a:integer;
end;

var
Form1: TForm1;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
a:=1
//本单元内引用,故不加范围说明
end;
end.
在其他单元引用时,用这种形式:form1.a:=1;
同时不要忘了引用UNIT1

方法二、定义为窗体级变量,如
unit1;
class=
...
public
end;

var
form1: Tform1;
aa: string;
其他单元引用aa时直接用其名字就可以了,如:aa:=1,当然,其他单元中也要引用UNIT1。

OK?

 
后退
顶部