f_sl_kh:=Tf_sl_kh.Create(self);
f_sl_kh.tag := 1;
f_sl_kh.Show;我碰到问题了,跟踪程序发现,当Tf_sl_kh.create后,便跳到f_sl_kh的formshow事件里去了。而该事件里有个判断 if f_sl_kh.Tag = 1 then
而正如各位可以看到的, f_sl_kh.tag := 1; 在 f_sl_kh:=Tf_sl_kh.Create(self); 的下一行。
程序便出错了。
谁可以告诉我,为什么当Tf_sl_kh.create后不是执行下一行代码 f_sl_kh.tag := 1; 反而会跳到f_sl_kh的formshow事件里去了呢? f_sl_kh:=Tf_sl_kh.Create(self);
f_sl_kh.tag := 1;
f_sl_kh.Show;我碰到问题了,跟踪程序发现,当Tf_sl_kh.create后,便跳到f_sl_kh的formshow事件里去了。而该事件里有个判断 if f_sl_kh.Tag = 1 then
而正如各位可以看到的, f_sl_kh.tag := 1; 在 f_sl_kh:=Tf_sl_kh.Create(self); 的下一行。
程序便出错了。
谁可以告诉我,为什么当Tf_sl_kh.create后不是执行下一行代码 f_sl_kh.tag := 1; 反而会跳到f_sl_kh的formshow事件里去了呢?大家帮帮忙,看出原因的请指教!
f_sl_kh.tag := 1;
f_sl_kh.Show;我碰到问题了,跟踪程序发现,当Tf_sl_kh.create后,便跳到f_sl_kh的formshow事件里去了。而该事件里有个判断 if f_sl_kh.Tag = 1 then
而正如各位可以看到的, f_sl_kh.tag := 1; 在 f_sl_kh:=Tf_sl_kh.Create(self); 的下一行。
程序便出错了。
谁可以告诉我,为什么当Tf_sl_kh.create后不是执行下一行代码 f_sl_kh.tag := 1; 反而会跳到f_sl_kh的formshow事件里去了呢? f_sl_kh:=Tf_sl_kh.Create(self);
f_sl_kh.tag := 1;
f_sl_kh.Show;我碰到问题了,跟踪程序发现,当Tf_sl_kh.create后,便跳到f_sl_kh的formshow事件里去了。而该事件里有个判断 if f_sl_kh.Tag = 1 then
而正如各位可以看到的, f_sl_kh.tag := 1; 在 f_sl_kh:=Tf_sl_kh.Create(self); 的下一行。
程序便出错了。
谁可以告诉我,为什么当Tf_sl_kh.create后不是执行下一行代码 f_sl_kh.tag := 1; 反而会跳到f_sl_kh的formshow事件里去了呢?大家帮帮忙,看出原因的请指教!
f_sl_kh:=Tf_sl_kh.Create(self);
返回以前,OnShow实际已经被调用了,而默认,tag是等于0的,除非你设置了,所以
if f_sl_kh.Tag = 1 then
的判断出乎你的意料了是不是这样?随便说说,
如:
if (f_sl_kh.Tag = 1) and (pvShow=1) then
begin
end
else begin
pvShow := 1;
end;
呵呵……
的确如此。
贴子示众7天,让感兴趣的人看看,然后结贴。
在Tf_sl_kh类中写另一个构造函数,在这个构造函数中设f_sl_kh.tag := 1,然后再调用原来的构造函数
大体如下:
Constructor MyCreate(AOwner:TComponent);
begin
f_sl_kh.tag := 1;
Create(AOwner);
end;
f_sl_kh.tag := 1;
f_sl_kh.Show;
放在form的oncreate里就是你想要的了
procedure TForm1.Button1Click(Sender: TObject);
begin
form2:=TForm2.Create(self);
form2.Tag:=1;
form2.Show;
end;form2
procedure TForm2.FormShow(Sender: TObject);
begin
if form2.Tag = 1 then
begin
showmessage('test');
end;
end;
没遇到问题,不过如果屏蔽了这行//Application.CreateForm(TForm2, Form2);再FORM2 的 visible =ture 的话 就会报错,原因应该 正如alphax(英文水皮士) 说的那样。