看似简单的问题:有两个窗体共享一个变量的可能吗?(100分)

S

sghht

Unregistered / Unconfirmed
GUEST, unregistred user!
比如:form1中定义i:integer,form2中可以引用并修改,回到form1中再用的时候i的值的时
候i的值已经是改变过的了。这个问题我想了一个月,除了开一个文件以外好象没啥办法。
请大家多多指教
 
Y

yh

Unregistered / Unconfirmed
GUEST, unregistred user!
你的i在那里定义的,将代码贴出来,我觉得当然可以共用一个变量的。
 
S

sghht

Unregistered / Unconfirmed
GUEST, unregistred user!
随便在哪里定义都行,只要能用
 
Y

yh

Unregistered / Unconfirmed
GUEST, unregistred user!
那就将i定在Tform1的public段吧。
 
S

sghht

Unregistered / Unconfirmed
GUEST, unregistred user!
不行,只在unit1中有效
 
S

sunjinhua

Unregistered / Unconfirmed
GUEST, unregistred user!
什么意思啊?
只在unit1中有效?你是说i只能用在unit1而unit2无法引用?
 
Y

yh

Unregistered / Unconfirmed
GUEST, unregistred user!
同意上面的说法,unit2可以使用form1的i的。
 
X

xinglong

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Frm1;//第一个form

interface
...
type
...
private
{ Private declarations }
//这里定义只能在本form内使用,属于私人部分
public
{ Public declarations }
i: integer
//这里定义可以在本程序里使用,属于公开部分
end;
var
Form1: TForm1;

implementation

uses Frm2;//引用第二个form
{$R *.DFM}
...
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.i := 10;
end;
...

+++++++++++++++++++++++++++++++++++++++++++++++
unit Frm2;//第二个form

interface
...
type
...
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;

implementation

uses Frm1;//引用第一个form
{$R *.DFM}
...
procedure TForm2.Button1Click(Sender: TObject);
begin
Top := Form1.i;//这里引用
Form1.i := 20;//这里修改
end;
...

 

卷起千堆雪tyn

Unregistered / Unconfirmed
GUEST, unregistred user!
你定义一个全局变量,肯定好使的!!!
怎么这种问题………………不说了!
 
S

sghht

Unregistered / Unconfirmed
GUEST, unregistred user!
unit2可以引用,比如i的值初始定义为1,在unit2中可以得到并使用,但FORM2中改为2以后,
再回到FORM1中,i还是为1
 
L

loopy

Unregistered / Unconfirmed
GUEST, unregistred user!
全局变量是可以实现的,我已经做过此类的试验。。。
 
X

xinglong

Unregistered / Unconfirmed
GUEST, unregistred user!
To 提问者
把你的代码贴出来吧,让大家看一看那出了问题?我引用或修改可没有出现你说的问题。
 
S

sghht

Unregistered / Unconfirmed
GUEST, unregistred user!
代码已经被我改的惨不忍睹,我是想这个全局变量到底要在哪里定义?
 
X

xinglong

Unregistered / Unconfirmed
GUEST, unregistred user!
在“public”定义呀,你是在那定义?
 

卷起千堆雪tyn

Unregistered / Unconfirmed
GUEST, unregistred user!
在Unit1的
var
Form1 :TForm;
处定义!!!
 
S

sghht

Unregistered / Unconfirmed
GUEST, unregistred user!
一、在public处不行,我试过
二、在var处也不行,我也试过
不信请自己试试
 
X

xinglong

Unregistered / Unconfirmed
GUEST, unregistred user!
卷起千堆雪tyn的方法也行。
 

秋风萧萧

Unregistered / Unconfirmed
GUEST, unregistred user!
我一直都用,同意楼上的兄弟。
在Unit1的
var
Form1 :TForm;
i:integer;

处定义!!!
 
X

xinglong

Unregistered / Unconfirmed
GUEST, unregistred user!
看不到你的代码,我是没办法了。我可以告诉你的是这种方法我是经常用的,
就是没出过你说的情况。
 
顶部