メインフォームが作成される前にログイン画面を作成する方法の例を取得しました。ただし、ログイン画面が閉じる前に変数を取得する方法がわかりません。変数を渡そうとしています
SelectedUserName : String;
SelectedUserIdNo, SelectedCoyId : Integer;
さらに処理するために loginfrm からメインフォームに。
何か案は。
前もって感謝します。
ここにメインコードがあります:
program Pac;
{$R *.res}
uses
ExceptionLog, Forms,
MainForm in 'Main\MainForm.pas' {MainFormFrm} ,
Datamodule in 'Main\Datamodule.pas' {DataModuleFrm: TDataModule} ,
Login in 'Security\Login.pas' {LoginFrm};
begin
if tLoginFrm.Execute then
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TMainFormFrm, MainFormFrm);
Application.CreateForm(TDataModuleFrm, DataModuleFrm);
Application.Run;
end
else
begin
Application.MessageBox
('You are not authorized to use the application. The password is "delphi".',
'Password Protected Delphi application');
end;
end.
私のログインコードは:
unit Login;
interface
uses
Windows, .. .. ..;
type
TLoginFrm = class(TForm)
Label1: TLabel;
ButtOk: TButton;
ButtCancel: TButton;
cxMaskEditUserId: TcxMaskEdit;
cxMaskEditPw: TcxMaskEdit;
ButtReset: TButton;
Label2: TLabel;
QueryUser: TMSQuery;
MSConnectionMain: TMSConnection;
procedure ButtOkClick(Sender: TObject);
procedure CheckMenuAccess;
procedure ButtResetClick(Sender: TObject);
procedure FormShow(Sender: TObject);
public
SelectedUserName: String;
SelectedUserIdNo, SelectedCoyId: Integer;
{ Public declarations }
class function Execute: boolean;
end;
implementation
uses DataModule, MainForm, OutletListing;
{$R *.dfm}
class function TLoginFrm.Execute: boolean;
begin
with TLoginFrm.Create(nil) do
try
Result := ShowModal = mrOk;
finally
Free;
end;
end;
procedure TLoginFrm.FormShow(Sender: TObject);
begin
MSConnectionMain.Connected := True;
end;
procedure TLoginFrm.ButtOkClick(Sender: TObject);
begin
{ Verify users are in list of users }
With QueryUser Do
Begin
Active := False;
if cxMaskEditUserId.EditValue = Null then
ParamByName('UserId').Clear
ELSE
ParamByName('UserId').AsString := cxMaskEditUserId.EditValue;
if cxMaskEditUserId.EditValue = Null then
ParamByName('Userpassword').Clear
ELSE
ParamByName('Userpassword').AsString := cxMaskEditPw.EditValue;
Active := True;
If (FieldByName('UserId').IsNull) or
(cxMaskEditUserId.EditValue = Null) Then
Begin
cxMaskEditUserId.EditValue := Null;
cxMaskEditPw.EditValue := Null;
cxMaskEditUserId.SetFocus;
End
Else
Begin
OutletListingFrm := TOutletListingFrm.Create(Self);
SelectedUserIdNo := FieldByName('UserIdNo').AsInteger;
SelectedUserName := FieldByName('UserName').AsString;
OutletListingFrm.SelectedUserId := FieldByName('UserIdNo').AsInteger;
IF OutletListingFrm.ShowModal = mrOk THEN
BEGIN
SelectedCoyId := FieldByName('CoyId').AsInteger;
ModalResult := mrOk;
END
ELSE
ModalResult := mrCancel;
OutletListingFrm.Free;
End;
End;
end.