CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

!!登陆!!

楼主goodcsdn(就是我了)2002-11-16 23:49:23 在 Delphi / VCL组件开发及应用 提问

我想在完成的应用程序中添加登陆界面,如何设计结构最合理?要考虑注销。由于第一个创建的窗口总是Application.MainForm,所以我不知道如何是好。请帮忙。 问题点数:100、回复次数:8Top

1 楼l_xiaofeng(行到水窮處,坐看雲起時!)回复于 2002-11-17 00:04:45 得分 0

搜索一下有很多例子。Top

2 楼baby19820917()回复于 2002-11-17 00:09:26 得分 0

你可以在你的Application.MainForm   的onshow里加上就可以了。让他先显示你的登陆form   .如果要注销的话就再让你的登陆form.show就不是可以了吗??  
  Top

3 楼cnsuyong(小可)回复于 2002-11-17 00:12:30 得分 80

经验:  
  1、可以在主窗口的OnShow事件中调用登陆函数,这样做对实现注销不利;  
  2、可以在主窗口的OnCreate事件中调用登陆函数,这样做对登陆失败处理不利;  
  3、可以在主窗口中用一个Timer来控制,这样做很方便,对于实现注销也很简单。  
  procedure   TMainForm.Timer1Timer(Sender:   TObject);  
  begin  
      //Timer1的Interval应当尽量小  
      Timer1.Enabled   :=   False;  
      if   Login   then   begin  
          //初始化  
      end   else   begin  
          //登陆失败处理  
          Close;  
      end;  
  end;  
  如果要注销,则直接:  
  Timer1.Enabled   :=   True;  
  即可。Top

4 楼hfycl(袒右)回复于 2002-11-17 00:47:46 得分 0

up一下Top

5 楼cgh1970(聊天别找我)回复于 2002-11-17 06:31:47 得分 0

upTop

6 楼hawksoft(明月清风)回复于 2002-11-17 08:40:36 得分 0

最好还是搜索一下,这个问题已经谈过很多次。  
  cnsuyong(小可)的方法不可取。因为注销牵扯到很多东西,如权限问题,界面用户化定义问题。建议登录在主窗体建立之前进行比较好。Top

7 楼nightroad(一年)回复于 2002-11-17 08:49:34 得分 0

兄弟,我不太理解你的注消是什么意思:)如果只是要加上一个登陆窗体那就比较好办:先NEW一个FORM,在project->options->forms,把Main   form置为你的LOGIN   FORM就可以了Top

8 楼xiaoyan21(明月心)回复于 2002-11-17 08:52:15 得分 20

给一个登录用户验证函数:  
   
  function   TMainF.CheckUser(AUserName   ,   AUserPwd   :   string):integer;  
  var  
      Query   :   TQuery;  
  begin  
      try  
          Query   :=   TQuery.Create(nil);  
          Query.DatabaseName   :=   DBName;  
          Query.SQL.Add('select   *   from   tsyhb   where   UserName=:UserName');  
          Query.ParamByName('UserName').AsString   :=   AUserName;  
          Query.Open;  
          if   Query.RecordCount   =   0   then  
          begin  
              MessageDlg('用户名错误',mtError,[mbok],0);  
              Result   :=   -1;  
              Exit;  
          end   else   begin  
              if   Query.FieldByName('UserPwd').AsString   <>   AUserPwd   then  
              begin  
                  MessageDlg('用户名或口令错误',mtError,[mbok],0);  
                  Result   :=   -1;  
                  Exit;  
              end  
              else   Result   :=   Query.FieldByName('Class').AsInteger;  
          end;  
          Query.Close;  
          Query.Free;  
      except  
            Result   :=   -1;  
            MessageDlg('连接数据库出错',mtError,[mbok],0);  
      end;  
  end;Top

相关问题

  • 登陆
  • NT登陆
  • 登陆认证...
  • 登陆蜜码
  • 关于登陆……
  • 登陆问题
  • 登陆窗体
  • 登陆问题~~~~~~~~
  • 远程登陆
  • Win98登陆

关键词

  • 注销
  • 函数
  • 用户
  • 登陆
  • mterror
  • query
  • 主
  • mbok
  • messagedlg
  • timer

得分解答快速导航

  • 帖主:goodcsdn
  • cnsuyong
  • xiaoyan21

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo