我有一些菜单项,其中的操作是这样的:
procedure TMISMainFrm.ActiSalesInvoiceExecute(Sender: TObject);
begin
if CheckMdiList('Sales Invoice') then
BEGIN
SalesInvFrm := tSalesInvFrm.Create(Self,0,UserIdNo,1,1);
SalesInvFrm.Show;
END;
end;
Run Code Online (Sandbox Code Playgroud)
可以从多个位置调用上述操作,但第二个参数(0)可能会更改.如何传递必需的参数,以便我不必重新编码例程?
我获得了一个如何在创建主窗体之前创建登录屏幕的示例.Howwever我不知道如何在登录屏幕关闭之前获取变量.我试图传递变量
SelectedUserName : String;
SelectedUserIdNo, SelectedCoyId : Integer;
Run Code Online (Sandbox Code Playgroud)
从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.
Run Code Online (Sandbox Code Playgroud)
我的登录代码是:
unit Login;
interface
uses
Windows, .. .. ..;
type …Run Code Online (Sandbox Code Playgroud) 我有一个显示联系地址的mdi表格.由于它是Mdi,我可以打开表格的多个副本.然而,显然所使用的变量在表格中被"复制".因此,在下面的代码中,ContactTypeId将具有基于创建的最后一个表单的值.
implementation
uses DataModule, MainForm;
{$R *.dfm}
var ModuleUserLevel, ContactId, ContactTypeId : Integer;
EditMode, EditAccess, AddAccess, DeleteAccess : Boolean;
ContactName : String;
constructor TContactDetailsFrm.Create(AOwner:TComponent; InContactTypeId, InContactId : Integer);
Begin
Inherited Create(AOwner);
ContactId := InContactId;
ContactTypeId := InContactTypeID;
End;
Run Code Online (Sandbox Code Playgroud)
我怎么能避免这个?
提前致谢