在delphi中如何使用多窗体? (50分)

  • 主题发起人 主题发起人 Banny
  • 开始时间 开始时间
B

Banny

Unregistered / Unconfirmed
GUEST, unregistred user!
我在delphi中创建了两个窗体,我希望运行程序时一个窗体是可见的,
即主窗体,单击某个按钮后弹除另一个窗体,布置如何实现?
 
Form1里面 uses form2

form2.Show()
或者
form2.ShowModal()
 
扔个bitbtn1,在onclick事件中
form2.showmodal;不就行了,
 
我一般都是动态创建,先uses form
这样写,
with TForm2.Create(Self) do
try
ShowModal;
finally
Free;
end;
 
在按钮的OnClick事件中写入:
(要在项目中,把Form2从自动创建中移走)

Form2:=TFor2.Create(Form1);
Try
Form2.ShowModal;
.......
finally
Form2.Release;
End;
 
先建立好Form2,在Form1中Button1單擊事件中
procedure TForm.Button1Click(Sender: TObject);
Begin
Form2:=TForm.Create(application);
try
Form1.Hide;
Form2.ShowModal;
Form1.Show;
finally
Form2.Free;
end;
end;
 
要在项目中,把Form2从自动创建中移走
在button1的click事件中加入
Application.CreateForm(TForm2,Form2);
或(TForm2.CreateForm(application);)

Form2.ShowModal; /////(or Form2.Show;)
 
在implementation后面要加上uses Unit2;这样Unit1就可以调用Unit2了.

另:
江林勝,
你有没有用你这种方法调用多个都有mediaplayer控件的窗口试试,大概在三十个左右
系统就会死机了.不知有没有谁也遇到过这种情况,最后是怎样解决的呢?
(我在各个窗口间是用close的方法关闭mediaplayer控件的)
 

方法很多但要注意一点:模式子窗口与非模式子窗口的使用。

非模式窗口的使用要注意:
1。不要占尽资源(create and create ...)
2。最好利用句柄控制Create出多个实例!!!!!!

 
多谢回答!
 
uses form2
可利用窗体的可视属性在按钮的click加入
form2.visual:=true;
 
to 大白鲨:
你的程序要三十个左右mediaplayer控件??
 
:wjiachun,很奇怪么?
我不知道怎么样用DELPHI播MPEG文件,所以把它们都剪成小段AVI文件在每个FORM上调用.
但这样一来再加上解说声音的话,每个Form便要用两个mediaplayer控件,而我在用
procedure TForm.Button1Click(Sender: TObject);
Begin
Form2:=TForm.Create(self);
try
Form1.Hide;
Form2.ShowModal;
Form1.Show;
finally
Form2.Free;
end;
这样的方法实现多窗口体调用时,发现原本应该Free的窗体并没有真正从系统资源里清除.
当程序连续调用二十多个有两个mediaplayer控件的窗体后就死机了.
也就是说,然我没有在一个窗体中加三十多个mediaplayer控件,
但没被释放的四五十个,已经足够让程序玩完的啦!
不知各位有何高见?
 
uses form2

buttonclick 事件
form2。show。或是 showmodal
用 form2。visable 在关闭窗体是最好调用 application。terminate;
 
多人接受答案了。
 
后退
顶部