Delphi如何获取变量值?

2026-04-10 20:442阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计726个文字,预计阅读时间需要3分钟。

Delphi如何获取变量值?

我理解您想要对以下内容进行简化改写,不超过100字,不使用数字:

原文:我获得了如何在创建主窗口体之前创建登录屏幕的示例。然而,我不知道在登录屏幕关闭之前如何获取变量。我尝试图传变量SelectedUserName:String;SelectedUserIdNo,SelectedCoyId:Integer;从log

改写结果:如何先创建登录屏,再获取变量?尝试传变量SelectedUserName和SelectedUserIdNo,SelectedCoyId,但不知如何操作。

我获得了一个如何在创建主窗体之前创建登录屏幕的示例.
Howwever我不知道如何在登录屏幕关闭之前获取变量.我试图传递变量

SelectedUserName : String; SelectedUserIdNo, SelectedCoyId : Integer;

从loginfrm到mainform进行进一步处理.

有任何想法吗.

提前致谢.

这是主要代码:

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. 创建包含要从登录表单返回的信息的记录:

type TLoginInfo = record SelectedUserName: string; SelectedUserIdNo: Integer; SelectedCoyId: Integer; end;

然后从登录类的Execute方法返回这样的记录:

function Execute(out LoginInfo: TLoginInfo): Boolean;

如果登录成功,则执行方法的实现需要填写这些详细信息.

然后将信息传递给主表单.您无法在对Application.CreateForm的调用中执行此操作.因此,您需要在TMainFormFrm上使用不同的方法,可以在创建主窗体后调用它.并且该方法将接收从成功登录返回的TLoginInfo记录.

所以对于TMainFormFrm,你会添加一个名为InitialiseWithLoginInfo的公共方法.

procedure InitialiseWithLoginInfo(const LoginInfo: TLoginInfo);

然后你的.dpr文件看起来像这样:

var LoginInfo: TLoginInfo; begin if tLoginFrm.Execute(LoginInfo) then begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TMainFormFrm, MainFormFrm); MainFormFrm.InitialiseWithLoginInfo(LoginInfo); 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.

Delphi如何获取变量值?

本文共计726个文字,预计阅读时间需要3分钟。

Delphi如何获取变量值?

我理解您想要对以下内容进行简化改写,不超过100字,不使用数字:

原文:我获得了如何在创建主窗口体之前创建登录屏幕的示例。然而,我不知道在登录屏幕关闭之前如何获取变量。我尝试图传变量SelectedUserName:String;SelectedUserIdNo,SelectedCoyId:Integer;从log

改写结果:如何先创建登录屏,再获取变量?尝试传变量SelectedUserName和SelectedUserIdNo,SelectedCoyId,但不知如何操作。

我获得了一个如何在创建主窗体之前创建登录屏幕的示例.
Howwever我不知道如何在登录屏幕关闭之前获取变量.我试图传递变量

SelectedUserName : String; SelectedUserIdNo, SelectedCoyId : Integer;

从loginfrm到mainform进行进一步处理.

有任何想法吗.

提前致谢.

这是主要代码:

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. 创建包含要从登录表单返回的信息的记录:

type TLoginInfo = record SelectedUserName: string; SelectedUserIdNo: Integer; SelectedCoyId: Integer; end;

然后从登录类的Execute方法返回这样的记录:

function Execute(out LoginInfo: TLoginInfo): Boolean;

如果登录成功,则执行方法的实现需要填写这些详细信息.

然后将信息传递给主表单.您无法在对Application.CreateForm的调用中执行此操作.因此,您需要在TMainFormFrm上使用不同的方法,可以在创建主窗体后调用它.并且该方法将接收从成功登录返回的TLoginInfo记录.

所以对于TMainFormFrm,你会添加一个名为InitialiseWithLoginInfo的公共方法.

procedure InitialiseWithLoginInfo(const LoginInfo: TLoginInfo);

然后你的.dpr文件看起来像这样:

var LoginInfo: TLoginInfo; begin if tLoginFrm.Execute(LoginInfo) then begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TMainFormFrm, MainFormFrm); MainFormFrm.InitialiseWithLoginInfo(LoginInfo); 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.

Delphi如何获取变量值?