请各位帮忙!!
我想做一个登录界面,Form1为主窗体,login为登录窗体,我是不是在主窗体的FormCreate事件中动态创建Login登录窗口? 用ShowModal显示它,成功登录后,不能关闭登录窗口!
请帮忙较正!!!! 或请另给方法!!
我想做一个登录界面,Form1为主窗体,login为登录窗体,我是不是在主窗体的FormCreate事件中动态创建Login登录窗口? 用ShowModal显示它,成功登录后,不能关闭登录窗口!
请帮忙较正!!!! 或请另给方法!!
解决方案 »
- clipCursor(@rect); 这里为什么要加@?
- delphi操作.net生成的类型库:*.tlb文件问题,求大侠指教
- ADOConnection如何连接带密码的db1.mdb文件
- 用过DX控件的朋友请给指点一下!!!
- Borland 7 与delphi的主要差别是什么?
- 怎样把ADODataSet里面的数据一下子全部存到SQL Server的一个表里面呢?
- 数据类型转换问题
- 同志们,请教对于文件的操作 !!!
- 怎样得到一天的起始时间,例如:今天是2001-11-1,则我希望得到:2001-11-1 00:00:00
- 图形组件的CANVAS的问题???
- 在线等待(100分-每个20分)再问那几个很菜的问题
- treeview 的expanded 问题
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;------------------------------------------------------------------------
这种使用前后台函数的方法的唯一好处就是功能划分严格!
....
LoginFrm in '..\LoginFrm.pas' {LoginForm}, //这里的路径自己指定!
....
按你的做了,但在项目文件中系统不能找到登录窗口中的Form7.CheckUserLogin(vIsExit); 事件,请问该如何在项目文件中声明这个事件?---------------------------------------------------------------------我第一个回复中说了,CheckUserLogin这个函数是不属于任何类的(是个例程,Delphi中不属于任何类的单独过程或函数统称为例程!),可以在LoginFrm单元的类型申明中进行,例如放到TLoginForm的类申明之后,如下:unit LoginFrm;interfaceuses
Windows, Messages, SysUtils, ....;type
TLoginForm = class(TForm)
....
private
{ Private declarations }
public
{ Public declarations }
end; function CheckUserLogin(var oIsExit:Boolean):String; //在这里申明........
也有一种是在主窗体的onshow中写,我两种都用,适时而定
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.
感激不尽!!
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.----------------------------------------------------------------------登陆窗体单元文件代码:unit LoginFrm;interfaceuses
....type
TLoginForm = class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Bevel1: TBevel;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
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;end.--------------------------------------------------------------------最后将LoginForm从你的自创建列表中去掉!
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.