有两个窗体FORM1,FORM2,我在FORM1。ONSHOW中写到
Form2 := TForm2.Create(Self);FORM2。SHOW;
而当FORM1窗体最小化时
这个FORM2的窗体受FORM1影响,也被最小化,
请问怎么做才可以让FORM2不被最下化

解决方案 »

  1.   

    Form2 := TForm2.Create(nil);
      

  2.   

    “按钮”同志:
    你所说问题是由于如下的原因:
    您的FORM1(应该是DELPHI默认的主窗体吧)其实是您的程序的主窗体,换句话说您所有程序的平台,以后你所建造的窗体都是基于他之上的,你最小化了form1,其实就是最小化了你的整个程序,所以会出现你所说的问题。你可以试一下,建立FORM1.FORM2,FORM3,你在FORM2里面调用FORM3,你最小化FORM3的时候form2,FORM1就不会是你说的那种状况。其实你所说的办法有以下几个解决办法:
    1、将主窗体作为隐含的或者splash form,像所举的例子那样,不要在主窗体上实现你的需求;
    3、创建 New Thread,这个我没有试,应该可以
    (注:主窗体可能不是专业术语,只是想着说的,希望你能明白我的意思!)
      

  3.   

    错了,这样不行!产生这问题的原因可以从VCL,Forms单元找!procedure TCustomForm.WMSysCommand(var Message: TWMSysCommand);
    begin
      with Message do
      begin
        if (CmdType and $FFF0 = SC_MINIMIZE) and (Application.MainForm = Self) then
          Application.WndProc(TMessage(Message))
        else if (CmdType and $FFF0 <> SC_MOVE) or (csDesigning in ComponentState) or
          (Align = alNone) or (WindowState = wsMinimized) then
          inherited;
        if ((CmdType and $FFF0 = SC_MINIMIZE) or (CmdType and $FFF0 = SC_RESTORE)) and
          not (csDesigning in ComponentState) and (Align <> alNone) then
          RequestAlign;
      end;
    end;注意这句:if (CmdType and $FFF0 = SC_MINIMIZE) and (Application.MainForm = Self) then
          Application.WndProc(TMessage(Message))如果是主窗体接收到消息,会转给Application,当然所有窗体都会最小化!找到原因,解决方法就不难了!拦截消息自己处理吧!
      

  4.   

    private
        { Private declarations }
        procedure WMSysCommand(var Message: TWMSysCommand);message WM_SysCommand;
    ......procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
    begin
      with Message do
      begin
        if (CmdType and $FFF0 = SC_MINIMIZE) then
           showwindow(self.Handle,SW_MINIMIZE)
        else if (CmdType and $FFF0 <> SC_MOVE) or (csDesigning in ComponentState) or
          (Align = alNone) or (WindowState = wsMinimized) then
          inherited;
        if ((CmdType and $FFF0 = SC_MINIMIZE) or (CmdType and $FFF0 = SC_RESTORE)) and
          not (csDesigning in ComponentState) and (Align <> alNone) then
          RequestAlign;
      end;
    end;