Delphi模态登录表单在最小化后不能恢复

时间:2014-04-10 17:00:26

标签: forms delphi modal-dialog restore minimize

我创建了一个Delphi 2010应用程序,它通过Application.Initialize之前的函数显示模态登录表单。登录表单不是我的主要表单。这是我的登录表单的代码:

unit frmLogin_u;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TfrmLogin = class(TForm)
    edtPass: TEdit;
    btnLogin: TButton;
    procedure btnLoginClick(Sender: TObject);
  private
    { Private declarations }
  public
    class function Execute: Boolean;
  end;

var
  frmLogin: TfrmLogin;

implementation

{$R *.dfm}

{ TForm2 }

procedure TfrmLogin.btnLoginClick(Sender: TObject);
begin
  if edtPass.Text = 'Delphi' then
    ModalResult :=  mrOk
  else
    MessageDlg('Incorrect password.', mtError, [mbOk], 0);
end;

class function TfrmLogin.Execute: Boolean;
begin
  with TfrmLogin.Create(nil) do
  try
    Result := ShowModal = mrOk;
  finally
    Free;
  end;
end;

end.

这是我的应用程序的源代码:

program frmLogin_p;

uses
  Forms,
  frmMain_u in 'frmMain_u.pas' {frmMain},
  frmLogin_u in 'frmLogin_u.pas' {frmLogin};

{$R *.res}

begin
  if TfrmLogin.Execute then
  begin
    Application.Initialize;
    Application.MainFormOnTaskbar := True;
    Application.CreateForm(TfrmMain, frmMain);
    Application.Run;
  end;
end.

这是我的问题:当显示登录表单时,即使其边框样式设置为bsDialog,当通过单击任务栏图标使表单最小化时,我似乎无法在单击任务栏图标后恢复它再次。所以现在我需要通过任务管理器关闭应用程序并重新打开它,因为我无法在最小化时恢复或关闭它。

有谁可能知道为什么会这样,以及我可以做些什么来解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果你这样做:

program Project2;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  if TForm2.Execute then
  begin
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end;
end.

不要在任务栏中显示图标。 我不知道它是否能解决你的问题。