我的程序有两个窗体:form1和form2,
form1为登陆验证窗口,运行程序时要先显示,所以,我把它设置成了主窗体.
在登陆成功后才显示Form2.现在我在Form2上做好了一个托盘程序,想实现Form2最小化后显示成托盘,问题来了:点击form2最小化按纽后,form2不能正常的在任务栏上隐藏,而是缩到屏幕左下方了.当我把form2设置成主窗体后,form2可以正常实现托盘功能,请问是不是托盘程序只适用于主窗体??在Form2这个非主窗体上如何实现托盘程序?????

解决方案 »

  1.   

    form1是登陆窗体,一定要是主窗体???
    不一定。。你把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.
      

  2.   

    不要忘记uses form1的单元begin
      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.
      

  3.   

    请问是不是托盘程序只适用于主窗体??
    --------
    是的。必须使用Application.Minimize才能最小化,如果对非主窗体最小化就会落到左下角。
    想要最小化到托盘,使用TrayIcon很容易实现。最好还是将Form2设成主窗体,你的登陆窗体在Form2的OnCreate事件里动态生成。
      

  4.   

    在Form2中加入:procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;procedure TForm2.WMSysCommand(var Message: TWMSysCommand);
    begin
      if (Message.CmdType and $FFF0 = SC_MINIMIZE) then
        Application.Minimize;
    end;
      

  5.   

    keyz(keyz)前辈,我把你的代码加到程序中去了,可是还是无法正常的隐藏非主窗体的Form1
      

  6.   

    呵呵,keyz(keyz)前辈,你的方法是可行的~~~~!!!!!!!