下面是Form1调用Form2的代码:
==================
procedure TForm1.Button1Click(Sender: TObject);
begin
try
Form2:=TForm2.create(self);
Form2.ShowModal;
except
Form2.Free;
end;
end;
==================
以下是Form2的全局变量定义和代码:==================
var
Form2: TForm2;
var1:integer=0;implementation{$R *.dfm}procedure TForm2.FormCreate(Sender: TObject);
begin
inc(var1);
edit1.Text:=inttostr(var1);
end;
==================
执行后,可以发现
第1次调用Form2时,edit1.Text显示为2,
第2次调用Form2时,edit1.Text显示为3,
第3次调用Form2时,edit1.Text显示为4
以后都是加1....两个问题:
1、第1次调用Form2时TForm2.FormCreate执行了2次?
2、第2次调用Form2时Form2定义的变量未重新初始化?
(我在TForm2.FormClose中加入Action:=cafree;也不行)请高手指点!
==================
procedure TForm1.Button1Click(Sender: TObject);
begin
try
Form2:=TForm2.create(self);
Form2.ShowModal;
except
Form2.Free;
end;
end;
==================
以下是Form2的全局变量定义和代码:==================
var
Form2: TForm2;
var1:integer=0;implementation{$R *.dfm}procedure TForm2.FormCreate(Sender: TObject);
begin
inc(var1);
edit1.Text:=inttostr(var1);
end;
==================
执行后,可以发现
第1次调用Form2时,edit1.Text显示为2,
第2次调用Form2时,edit1.Text显示为3,
第3次调用Form2时,edit1.Text显示为4
以后都是加1....两个问题:
1、第1次调用Form2时TForm2.FormCreate执行了2次?
2、第2次调用Form2时Form2定义的变量未重新初始化?
(我在TForm2.FormClose中加入Action:=cafree;也不行)请高手指点!
解决方案 »
- 关于DateTimePicker与查询的问题
- 怎么样修改Tstring中某个位置的内容
- delhi 字符串变量
- Delphi是否跨平台?
- 在SQL中unicode('我')=25105,那么在Delphi中,如何将25105换算成'我'?
- 请教,有DELPHI7的DBEXPRESS连接MYSQL的部题
- 如何获得表中浮点型字段的总长度?急!!解决了高分相送..在线等待
- 多线程,指针,TThreadList,Out of memory求救
- 请拉一把吧!给我一点学习delphi的入门经验!
- 菜鸟遇到麻烦!Tquery查询?
- 求救!!delphi调用vc的struct类型数据不一致
- 我的作品,欢迎各位牛人品评,顶着有分
2.在Form2的Destroy事件中增加代码 Form2:=nil;
begin
try
Form2:=TForm2.create(self);
Form2.ShowModal;
finally
Form2.Free;
end;
end;
基本常识,既然是全程变量,它就不属于form2,每次累加是正常的
这个基本常识,看样子很多人都不清楚。
哎!惭愧啊!那有没有属于Form2自己的变量,又能让调用Form2的Form1赋值得变量呢?
----
tform2的public里的变量
----
tform2的public里的变量=================
这个不行的,我早测试过了。好像只有全程变量了!
type
TForm2 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
var1:integer;
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}procedure TForm2.FormCreate(Sender: TObject);
begin
inc(var1);
edit1.Text:=inttostr(var1);
end;
--------------tform1--------------
procedure TForm1.Button1Click(Sender: TObject);
begin
try
Form2:=TForm2.create(self);
Form2.ShowModal;
except
Form2.Free;
end;
end;
我都试过了,不知道你怎么弄
{ Private declarations }
var1:integer;
public
var2:integer;
{ Public declarations }
end;var
Form2: TForm2;
var3:integer;
上面定义的变量,var1和var2都是Form2的变量,无法被调用Form2的Form1所使用,当Form2窗口free后变量被释放,再次调用Form2后,重新初始化。var3是全程变量,可以被Form1所使用,但当Form2窗口free后,变量不会被释放,再次调用Form2后,var3依然保持上次调用Form2后的值。
keiy() 说的对,只是这个常识大多数人不清楚!