uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Form2:=TForm2.create(Application);
try
if Form2.ShowModal = 1 then // form2为登陆窗口
begin
Application.Run;
end
else
Application.Terminate;
finally
Form2.free;
end;
end.
....
var
vError:String;
vIsExit:Boolean;
....
//登录验证
vErrorStr:=LoginFrm.CheckUserLogin(vIsExit); //假设登陆窗体单元为LoginFrm,并且在登陆窗体单元中定义一个例程CheckUserLogin方法
if vErrorStr<>'' then //vErrorStr为空表明调用登陆窗体成功!
begin
Application.MessageBox(PChar(vErrorStr),'错误',$00000010 + $00000000);
Application.Terminate ;
end;
if vIsExit then //vIsExit为True表示用户关闭了登陆窗体
Application.Terminate
else
begin
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end;
....
在登陆窗体单元中定义的CheckUserLogin例程:
function CheckUserLogin(var oIsExit:Boolean):String; //带一变参
var
vErrStr:String;
begin
vErrStr:='';
oIsExit:=False;
try
with TLoginForm.Create(Application) do
try
if IsAbortResult(ShowModal) then //判断关闭方式
oIsExit:=True;
finally
Free;
end;
except
vErrStr:='调用身份验证错误.';
end;
Result:=vErrStr;
end;
uses
Forms,
MainFrm in 'MainFrm.pas' {MainForm},
LoginFrm in '..\LoginFrm.pas' {LoginForm},
{$R *.res}
var
vErrorStr:String;
vIsExit:Boolean;
begin
Application.Initialize;
//登录验证
vErrorStr:=LoginFrm.CheckUserLogin(vIsExit);
if vErrorStr<>'' then
begin
Application.MessageBox(PChar(vErrorStr),'错误',$00000010 + $00000000);
Application.Terminate ;
end;
if vIsExit then
Application.Terminate
else
begin
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end;
end.
function CheckUserLogin(var oIsExit:Boolean):String;
var
LoginForm: TLoginForm;
implementation
{$R *.dfm}
function CheckUserLogin(var oIsExit:Boolean):String;
var
vErrStr:String;
begin
vErrStr:='';
oIsExit:=False;
try
with TLoginForm.Create(Application) do
try
if IsAbortResult(ShowModal) then
oIsExit:=True;
finally
Free;
end;
except
vErrStr:='调用登陆窗体错误.';
end;
Result:=vErrStr;
end;
procedure TLoginForm.Button1Click(Sender: TObject);
begin
ModalResult:=mrOk;
end;
我是按照你的要求做的,但在编译时有问题:请你查错:问题标记////////////
program HKSJ_SMS;
uses Forms,
terminater in 'terminater.pas' {Form1},
login in 'login.pas' {Form7};
var
vErrorStr:String;
vIsExit:Boolean;
{$R *.res}
begin
Application.Initialize;
Application.Title := '平台';
vErrorStr:=Form7.CheckUserLogin(vIsExit);
////////////此为登录窗口并在登录窗口中已声明了Form7.CheckUserLogin(vIsExit);但系统编译时出现这样的错误:[Error] HKSJ_SMS.dpr(40): Undeclared identifier: 'CheckUserLogin' 就这一句!是不是要在这声明。请指教! if vErrorStr<>'' then //vErrorStr为空表明调用登陆窗体成功!
begin
Application.MessageBox(PChar(vErrorStr),'错误',$00000010 + $00000000);
Application.Terminate ;
end; if vIsExit then //vIsExit为True表示用户关闭了登陆窗体
Application.Terminate
else
begin
Application.CreateForm(TForm1, Form1);//主窗口
Application.Run;
end; end.