Я сделал пример кода, показывающий, как отображать форму входа ПЕРЕД основной формой. Я проверил (Win10), что, свернув окно с помощью щелчка на панели задач, его можно повторно активировать с помощью щелчка на панели задач.
В форме входа я просто сделал это с двумя кнопками, одна для входа в систему и одна для неудачного входа в систему, без фактической проверки какого-либо кода пользователя/пароля. Я предполагал, что ты сможешь сделать эту часть.
Файл проекта:
program LoginDemo;
uses
Vcl.Forms, Vcl.Dialogs, Vcl.Controls,
LoginDemoMain in 'LoginDemoMain.pas' {DemoMainForm},
LoginDemoDialog in 'LoginDemoDialog.pas' {DemoLoginForm};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TDemoLoginForm, DemoLoginForm);
try
if DemoLoginForm.ShowModal <> mrOK then begin
ShowMessage('Invalid login, sorry...');
Exit;
end;
finally
DemoLoginForm.Free;
end;
Application.CreateForm(TDemoMainForm, DemoMainForm);
Application.Run;
end.
Диалоговое окно входа:
unit LoginDemoDialog;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TDemoLoginForm = class(TForm)
LoginOKButton: TButton;
LoginFailedButton: TButton;
Label1: TLabel;
procedure LoginFailedButtonClick(Sender: TObject);
procedure LoginOKButtonClick(Sender: TObject);
end;
var
DemoLoginForm: TDemoLoginForm;
implementation
{$R *.dfm}
procedure TDemoLoginForm.LoginFailedButtonClick(Sender: TObject);
begin
Close;
ModalResult := mrCancel;
end;
procedure TDemoLoginForm.LoginOKButtonClick(Sender: TObject);
begin
Close;
ModalResult := mrOK;
end;
end.
Основная форма:
unit LoginDemoMain;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TDemoMainForm = class(TForm)
Label1: TLabel;
ExitButton: TButton;
procedure ExitButtonClick(Sender: TObject);
end;
var
DemoMainForm: TDemoMainForm;
implementation
{$R *.dfm}
procedure TDemoMainForm.ExitButtonClick(Sender: TObject);
begin
Close;
end;
end.
person
fpiette
schedule
01.04.2021
if not TForm1.Execute...
, также было бы лучше использовать экземпляр, созданный приложением, поэтому используйте Execute как метод объекта, а не метод класса. - person Rob Lambden   schedule 01.04.2021