有两个窗体。一个是登录窗口,另一个是主窗口。
在项目中自动创建第一个窗体,不自动创建第二个窗体,第二个窗体由第一个窗体事件产生。
问题是:点击第二个窗体的最小化按钮,窗体会在左下脚产生一个标题条。
按常例应该会到任务拦。为什么DELPHI自动窗体不会有这样的问题。
如何解决这个问题?QQ也有这样的问题:登录窗口最小化也是这样。程序代码
-------------------------------------------------
program czglapp;uses
  Forms,
  login in 'login.pas' {Form1},
  main in 'main.pas' {Form2};{$R *.res}begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
----------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
if not assigned(form2) then
begin
form2:=tform2.Create(self);
end;
try
form2.Showmodal;
finally
form2.Free;
form1.close;
end;
end;
--------------------------------------------------------
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
----------------------------------------------------

解决方案 »

  1.   

    program WYGL_GLB;uses
      Forms,
      Login in 'pas\Login.pas' {Loginfrm},
      Start in 'pas\Start.pas' {Form1},
      DM in 'pas\DM.pas' {DataModule1: TDataModule},
      main_frm in 'pas\main_frm.pas' {GLB_main},
      YHXXCX_frm in 'pas\YHXXCX_frm.pas' {YHXXCX},
      FWZD_frm in 'pas\FWZD_frm.pas' {FWZD},
      YHZD_frm in 'pas\YHZD_frm.pas' {YHZD},
      YHLR_frm in 'pas\YHLR_frm.pas' {YHLR},
      XD_frm in 'pas\XD_frm.pas' {XD},
      XZYHFW_frm in 'pas\XZYHFW_frm.pas' {XZYHFW1},
      XD2_frm in 'pas\XD2_frm.pas' {XD2},
      ZLGX_frm in 'pas\ZLGX_frm.pas' {ZLGX},
      ZYGXJL_frm in 'pas\ZYGXJL_frm.pas' {ZYGXLB},
      FYJL_frm in 'pas\FYJL_frm.pas' {FYGXLB};{$R *.res}begin  Application.Initialize;
      form1:=Tform1.Create(Application);
      form1.show;
      form1.update;
      try
      Application.Title := 'aaaaaaaaaaaaa';
      Application.CreateForm(TDataModule1, DataModule1);
      datamodule1.ADOConnection1.Connected:=true;
      Application.CreateForm(TGLB_main, GLB_main);
      Application.CreateForm(TLoginfrm, Loginfrm);
      form1.Free;
      if loginfrm.ShowModal=1 then  Application.Run
      else
      Application.Terminate;
      except
      Application.MessageBox('连接数据库失败!!!','连接数据库');
      form1.Free;
      Application.Terminate;
      end;
    end.
      

  2.   

    其中form1是登录前log图片,loginfrm用户登录验证窗口,glb_main主界面
      

  3.   

    那是因为你的窗体不是主窗体就会有这样的情况,一般在工程文件中第一个创建的窗体为主窗体,其实你可以在工程文件中实现你想要的效果,在显示第2个窗体之前把第一个窗体free后就不会有你说的问题了
      

  4.   

    to hkbarton(宁静至远)(西南交大) 
    可以说具体点吗?
    form1.free应该加在哪里?
      

  5.   

    to IDWB() :
    你的GLB_main,Loginfrm这两个窗体在单击最小化按钮时是否有区别。我问的是这个。
    看你的Loginfrm在单击最小化按钮时的位置。
    我是让这两个窗体最小化时一样。
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if not assigned(form2) then
    begin
    form2:=tform2.Create(self);
    end;
    try
    form2.Showmodal;
    finally
    form2.Free;
    end;
    end;
      

  7.   

    to fhuibo(Sailor) 
    不明白..........
      

  8.   

    重载CreateParams方法
    声明方法:
     private
      protected
      procedure CreateParams(var Params: TCreateParams); override;
        { Private declarations }
      public
        { Public declarations }
      end;重载:
    procedure Tform1.CreateParams(var Params: TCreateParams);
    begin
    inherited CreateParams(Params);
      Params.WndParent := GetDesktopWindow;
    end;注意:FORMSTYLE属性都该为FSNOMORL
      

  9.   

    to czx0514(czx0514) 
    重载后,两个窗口都在任务栏显示了。可以做到只有一个吗?
      

  10.   

    查看一下最小化时的用ShowWindow(Handle, SW_HIDE)试试,如果不行,看看ShowWindow的帮助
      

  11.   

    你应该在工程选项中设为main from吧