登录窗口的问题? 我先写了主窗口,后写登录窗口,但编译启动时,两个窗口同时出现,我在OPTION里已设置主窗口,但还是如此,这是为什么,如何解决,THANKS? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 检查两个窗口的visible是否有为true 在主窗口中用事件ONSHOW来调用登陆窗就行了 例子:-------------------------------------------------------dpr文件:Form_welcome := TForm_welcome.Create(nil);Application.Initialize;Application.ProcessMessages;Form_welcome.lblState.Caption := '正在初始化系统... ';Form_welcome.Show;Application.ProcessMessages;Application.CreateForm(TfrmMain, frmMain);Form_welcome.lblState.Caption := '正在链接数据库... ';Form_welcome.Free;Application.Run;Form_welcome的属性设置:BorderStyle := bsNone; // 无边框Form_welcome关闭之后会自动打开form_main,所以在form_main的OnShow事件添加一段显示form_login窗口的代码,代码如下:form_login.ShowModal;显示form_login窗口之后可以加入检验密码的代码正确:用Close关闭窗口(注意:只是关闭form_login窗口,关闭form_login窗口就会打开form_main窗口)错误:用exit返回当前登陆窗口如果不想登陆,用Application.Terminate来关闭整个程序 1. 项目单元如下:begin Application.Initialize; Application.ShowMainForm:=false; //程序不显示主窗口 Application.CreateForm(TForm_main, Form_main); //创建主窗口 Application.Run;end.2. Main单元的OnCreate如下:begin FrmLog:= TFrmLog.Create(Application); //创建登陆窗口 if FrmLog.ShowModal=mrOK then self.show //登陆的密码正确,则显示自己 else Application.Terminate; //否则,程序结束end;3. login单元如下:var FrmLog: TFrmLog; ErrTime: Integer; //密码输入次数,全局变量implementationuses Main; //引用主窗口{$R *.dfm}procedure TFrmLog.FormCreate(Sender: TObject);begin ADOQuery1.Open; //查询密码 ErrTime:=0; //给输入密码次数赋初值end;procedure TFrmLog.Button1Click(Sender: TObject);begin if ErrTime>=2 then begin ModalResult:=mrCancel; //密码错误3次,自动关闭,给主窗口返回值mrCancel Exit; end; if Edit1.Text<>ADOQuery1.FieldByName('pswd').AsString then begin //密码错误 inc(ErrTime); MessageDlg('密码错误,请重新输入!',mtWarning,[mbOK],0); Edit1.Text:=''; Exit; end; ModalResult:=mrOK; //密码正确,自动关闭,给主窗口返回值mrOKend;end.被ShowModal的窗体,只要有ModalResult:=[mrOK,mrCancel,mrAbort,..]等,就会自动关闭,并返回相应的值。如果点击右上角的X关闭之,则自动返回mrCancel。不妨把“取消“按钮的ModalResult属性设为mrCancel,这样,用户点击“取消”也会自动关闭窗口,并返回值mrCancel Dispose释放指针时需要指定指针类型吗? 寻求版主,关于全局快捷键 一些特殊按键 “多步操作产生错误。请检查每一步的状态值”,请问这是什么错误啊???谢谢!!! ***** 请问 如何 远程调用COM ?急 ***** 动态创建TImageList的问题 dll和bpl的抉择!!! 怎样将一个十进制数转换为二进制数,并将二进制数中的每一位单独取出来? SQL语句的错误在哪儿 报表预览上的保存是怎么做的? D6不能运行了..高手帮忙看看.! 在标签中输入了一些中文字,可是不能完全显示! 怎么样将ADOQUERY查的数据传给两个以上的参数?
-------------------------------------------------------
dpr文件:
Form_welcome := TForm_welcome.Create(nil);
Application.Initialize;
Application.ProcessMessages;
Form_welcome.lblState.Caption := '正在初始化系统... ';
Form_welcome.Show;
Application.ProcessMessages;
Application.CreateForm(TfrmMain, frmMain);
Form_welcome.lblState.Caption := '正在链接数据库... ';
Form_welcome.Free;
Application.Run;Form_welcome的属性设置:
BorderStyle := bsNone; // 无边框Form_welcome关闭之后会自动打开form_main,所以在form_main的OnShow事件添加一段显示form_login窗口的代码,代码如下:
form_login.ShowModal;显示form_login窗口之后可以加入检验密码的代码
正确:用Close关闭窗口(注意:只是关闭form_login窗口,关闭form_login窗口就会打开form_main窗口)
错误:用exit返回当前登陆窗口
如果不想登陆,用Application.Terminate来关闭整个程序
begin
Application.Initialize;
Application.ShowMainForm:=false; //程序不显示主窗口
Application.CreateForm(TForm_main, Form_main); //创建主窗口
Application.Run;
end.
2. Main单元的OnCreate如下:
begin
FrmLog:= TFrmLog.Create(Application); //创建登陆窗口
if FrmLog.ShowModal=mrOK then self.show //登陆的密码正确,则显示自己
else Application.Terminate; //否则,程序结束
end;
3. login单元如下:
var
FrmLog: TFrmLog;
ErrTime: Integer; //密码输入次数,全局变量implementation
uses Main; //引用主窗口
{$R *.dfm}procedure TFrmLog.FormCreate(Sender: TObject);
begin
ADOQuery1.Open; //查询密码
ErrTime:=0; //给输入密码次数赋初值
end;procedure TFrmLog.Button1Click(Sender: TObject);
begin
if ErrTime>=2 then
begin
ModalResult:=mrCancel; //密码错误3次,自动关闭,给主窗口返回值mrCancel
Exit;
end;
if Edit1.Text<>ADOQuery1.FieldByName('pswd').AsString then
begin //密码错误
inc(ErrTime);
MessageDlg('密码错误,请重新输入!',mtWarning,[mbOK],0);
Edit1.Text:='';
Exit;
end;
ModalResult:=mrOK; //密码正确,自动关闭,给主窗口返回值mrOK
end;end.被ShowModal的窗体,只要有ModalResult:=[mrOK,mrCancel,mrAbort,..]等,就会自动关闭,并返回相应的值。如果点击右上角的X关闭之,则自动返回mrCancel。不妨把“取消“按钮的ModalResult属性设为mrCancel,这样,用户点击“取消”也会自动关闭窗口,并返回值mrCancel