gpt4 book ai didi

delphi - mainform 试图在关闭登录表单时显示

转载 作者:行者123 更新时间:2023-12-03 14:52:39 24 4
gpt4 key购买 nike

这是 *.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.ShowMainForm := false 即可。

关闭登录表单后执行的

Application.Run 将根据默认为 true 的 Application.ShowMainForm 变量的值显示或不显示主表单。因此这会引入闪烁,因为主窗体将在应用程序终止之前显示。

begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.ShowMainForm := false;
Application.CreateForm(TForm1, Form1);
Login;
Application.Run;
end.

关于delphi - mainform 试图在关闭登录表单时显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40318756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com