如何使用delphi里的timer控件?
我的form1里用了一个timer,让它在开始后自动弹出Form2,用了form2.show,但form2,show弹出后form1并没有关闭,还开着,我又用的form1.close,现在能关闭了,但form2又弹不出来了。我要怎么做才能即让form1自动关闭并让form2弹出?我的timer代码如下:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
form2.Show;
form1.Close
end;
问题点数:20、回复次数:13Top
1 楼guguda(刀巴)回复于 2002-04-17 13:44:14 得分 0
怎么没有人回答啊。知道的朋友说一声啊。Top
2 楼mr_wn(宝盖丁)回复于 2002-04-17 13:44:50 得分 5
form1是主form,你把它关了,form2自然就关了
将form2也设置为主form就可以了Top
3 楼weizhi(行者)回复于 2002-04-17 13:47:22 得分 5
呵呵,楼上说的没错,你改form1.Close为form1.Hide;吧!
Top
4 楼outer2000(天外流星)回复于 2002-04-17 13:47:25 得分 0
不用TIMER控件。在FORM1的ONCLOSE事件里让FORM2。SHOW可以吗?Top
5 楼guguda(刀巴)回复于 2002-04-17 13:52:57 得分 0
我用了hide,不成啊。程序退不出去!!!我怎么才能让form2为主???Top
6 楼guguda(刀巴)回复于 2002-04-17 14:05:17 得分 0
朋友们,回答一下了。Top
7 楼chinajavis(我选择 我喜欢)回复于 2002-04-17 14:07:44 得分 5
主窗口Form1是不能关闭的。
你可以在关闭Form1的按钮Click事件中这样写:
procedure TForm1.Button1Click(Sender: TObject);
begin
Hide;
Form2.Show;
end;
但要注意的是,这样做你的主窗体Form1只是被隐藏了,并没有被释放。
如果要在Form2做完事情后就关闭的话,那时也要将Form1关闭掉。即:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.Close;
end;
如果要在Form2做完事情后再回到主窗体Form1话,那时可将Form1重新显示。即:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.Show;
end;
当然,Unit1单元中要uses Unit2;Unit2单元中要uses Unit1Top
8 楼LFreeX(迷茫)回复于 2002-04-17 14:08:20 得分 0
为什么要程序退出去?Top
9 楼hwkknd(白开水)回复于 2002-04-17 14:08:51 得分 0
如果Form2为主的放,那何来Form1啊?
呵这个办法恐怕也不妥吧……Top
10 楼hwkknd(白开水)回复于 2002-04-17 14:21:40 得分 5
Form1为主窗体,
在Form1里创建Form2:
Application.MainForm.Hide ;
Form2.Show ;
在Form2.Close里加入:
application.Terminate ;
就可以即隐藏主窗体又可显示F2,又避免Unit间的重复引用!Top
11 楼BossHawk(BossHawk)回复于 2002-04-17 14:21:43 得分 0
to chinajavis(我选择 我喜欢)
真是好人,补充一下,就是为什么不用Form1.Close而用Form1.Hide
因为Form1是主窗口,它的关闭就意味着整个程序的关闭,当然Form2就不见了
至于改Form2为主窗体是治标不治本的,你还得先把Form1 Show出来把Form2 Hide掉,回到上面的问题中去了
可以在Project options中改变主窗体,也可在工程文件中通过改变第一个创建的窗体达到目的
Top
12 楼guguda(刀巴)回复于 2002-04-17 14:29:03 得分 0
谢谢大家了。我用 chinajavis(我选择 我喜欢) 的方法了。Top
13 楼chinajavis(我选择 我喜欢)回复于 2002-04-17 14:32:00 得分 0
bosshawk(BossHawk)、hwkknd(白开水)说的也都对Top




