写在工程文件中 var Login: Boolean; begin Application.Initialize; with TLoginForm.Create(Application) do try if ShowModal = mrok then login := True else login := False; finally Free; end; if Login then begin Application.Title := '综合信息管理系统'; Application.CreateForm(TMainForm, MainForm); Application.Run; end;
写个类方法 调用类方法 判断窗体返回值 class function Loginform:Boolean; beginend;
我是在主窗体的OnCreate事件中登录的,登录成功则顺序执行,不成功则终止程序,在OnCreate事件中主窗体是尚未显示的,达到隐藏主窗体的目的. procedure TMailForm.FormCreate(Sender: TObject); begin pswForm:=TpswForm.Create(self);//建立登录窗体 if pswForm.ShowModal <> mrOk then begin pswForm.Free; Application.Terminate; end; end; 在登录窗pswForm中密码正确则返回 ModalResult := mrOk,保证主窗体顺序执行
在工程文件中处理,先创建主窗体,再创建登录窗体并模式显示,验证用户名和密码在登录窗体中完成,如果验证通过,就继续运行,否则就中止运行。 Application.Initialize; Application.CreateForm(TMainForm, MainForm); Application.CreateForm(TDataForm, DataForm); Application.CreateForm(TLoginForm, LoginForm); if LoginForm.ShowModal = 1 then //mrOK begin LoginForm.Free; Application.Run; end else begin LoginForm.Free; Application.Terminate; end;
如果程序启动顺序不是我上面说的那样,那你所谓的主窗体(启动窗体)应该是登陆窗体了,这样的话,你在登陆成功以后可以发消息给要显示的窗体,然后登陆窗体free了,为了不让显示的窗体在不登陆的情况打开,你需要按你的要求传递参数给显示窗体,然后显示窗体判断命令行是否有参数来进行是否运行?不知道这样回答可以不!
目前我有两个方法,但是都不怎么好。
1.登陆窗体为主窗体,程序一启动就出现登陆窗体,登陆成功后,登陆窗体HIDE,然后主界面show现来。这样子做有一个不好的地方,就是在主界面最小化的时候不会最小化到任务栏,而是在桌面的左下角。2.主界面作为主窗体,启动程序时主界面先hide,登陆窗体show出来,登陆成功后,主界面show,然后登陆窗体CLOSE,这样子做的话,在登陆时如果直接按退出,,程序会闪现主界面,再退出。而不是直接退出。高人指点一下要怎么做啊?
var
Login: Boolean;
begin
Application.Initialize;
with TLoginForm.Create(Application) do
try
if ShowModal = mrok then login := True
else
login := False;
finally
Free;
end; if Login then
begin
Application.Title := '综合信息管理系统';
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end;
beginend;
procedure TMailForm.FormCreate(Sender: TObject);
begin
pswForm:=TpswForm.Create(self);//建立登录窗体
if pswForm.ShowModal <> mrOk then
begin
pswForm.Free;
Application.Terminate;
end;
end;
在登录窗pswForm中密码正确则返回 ModalResult := mrOk,保证主窗体顺序执行
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TDataForm, DataForm);
Application.CreateForm(TLoginForm, LoginForm);
if LoginForm.ShowModal = 1 then //mrOK
begin
LoginForm.Free;
Application.Run;
end
else
begin
LoginForm.Free;
Application.Terminate;
end;