我的程序有两个窗体:form1和form2,
form1为登陆验证窗口,运行程序时要先显示,所以,我把它设置成了主窗体.
在登陆成功后才显示Form2.现在我在Form2上做好了一个托盘程序,想实现Form2最小化后显示成托盘,问题来了:点击form2最小化按纽后,form2不能正常的在任务栏上隐藏,而是缩到屏幕左下方了.当我把form2设置成主窗体后,form2可以正常实现托盘功能,请问是不是托盘程序只适用于主窗体??在Form2这个非主窗体上如何实现托盘程序?????
form1为登陆验证窗口,运行程序时要先显示,所以,我把它设置成了主窗体.
在登陆成功后才显示Form2.现在我在Form2上做好了一个托盘程序,想实现Form2最小化后显示成托盘,问题来了:点击form2最小化按纽后,form2不能正常的在任务栏上隐藏,而是缩到屏幕左下方了.当我把form2设置成主窗体后,form2可以正常实现托盘功能,请问是不是托盘程序只适用于主窗体??在Form2这个非主窗体上如何实现托盘程序?????
不一定。。你把form2设置为主窗体,form1设置为动态生成,在project工程文件中动态生成form1就可以。示例代码如下,可能要自己改改
begin
Application.Initialize;
form1 := tform1.create(nil);
if form1.showmodal=mrOK then
begin
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.
Application.Initialize;
form1 := tform1.create(nil);
try
if form1.showmodal=mrOK then
begin
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
finally
form1.free;
end;
end.
--------
是的。必须使用Application.Minimize才能最小化,如果对非主窗体最小化就会落到左下角。
想要最小化到托盘,使用TrayIcon很容易实现。最好还是将Form2设成主窗体,你的登陆窗体在Form2的OnCreate事件里动态生成。
begin
if (Message.CmdType and $FFF0 = SC_MINIMIZE) then
Application.Minimize;
end;