这是 *.dpr 文件:
program Project1;
uses
Vcl.Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
var
MainForm: TForm1;
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Login;
Application.Run;
end.
登录表单:
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
procedure Login;
implementation
{$R *.dfm}
Uses Unit1;
procedure Login;
begin
with TForm2.Create(nil) do
try
Application.MainForm.Hide;
if ShowModal = mrOK then
Application.MainForm.Show
else
Application.Terminate;
finally
Free;
end;
end;
end.
主表单:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Uses Unit2;
procedure TForm1.Button1Click(Sender: TObject);
begin
Login;
end;
end.
两个按钮都设置为模态 :mrOK。 登录表单没有自动创建,但在可用表单列表中。
问题是这样的: 如果你在不点击按钮的情况下关闭登录表单,主表单会短暂地显示然后关闭(当然,应用程序也会关闭)。这发生得非常快。看起来像闪烁。
我该如何取消主表单尝试在关闭登录表单时显示自己的尝试?
此外,设置:
Application.MainFormOnTaskbar := False;
也没有帮助...
Application.CreateForm(...)
和Application.MainFormOnTaskbar := true
,那么登录窗体就没有任务栏图标。 - ventiseisCreateParams()
方法以启用该行为。 - Remy Lebeau