zoukankan      html  css  js  c++  java
  • 用户登录

    关于系统用户注销然后以另一用户身份登录的Delphi实现

    做一个普通的管理系统,有用户退出和用户注销的菜单。用户退出后整个系统关闭;用户注销后系统并不关闭,而是同重新启动系统一样,弹出登录窗体等待其他用户登录。 

    看了n多资料,方法高深得很。但是看了一下program里的代码,借用窗体的事件,轻松地实现了。

    具体实现方法如下:在注销菜单的click事件中添加如下代码: 

      Frm_Interface.Destroy;//程序主窗体销毁;我的程序中Frm_Interface是系统启动时自动生成的主窗体。
      Application.Initialize;
      Application.CreateForm(TFrm_Interface, Frm_Interface);//重新创建主窗体,由于我的主窗的onshow

    //事件中调用了系统登录界面,在主窗体显示之前会先启动登录界面。
      Application.Run;

    //

    最后要强调,要想用以上方法成功实现用户注销,注意你的主窗体的Destroy事件中是不是用了不该出现的代码让整个应用程序结束了呢?如果有,解决吧!否则整个程序都注销了,后面的代码还能执行到么?!

    /////////////////////////////////////////////////////////
    重新登陆的事件中  mainForm.hide;if loginForm.showmodal = mbok then mainform.show 这种是主窗口在工程中比登录窗口先创建,只是被隐藏了

    ////////////////////////////////////////

    点击“重新登录”按钮,隐藏MAin,显示Login,正确后显示Main。

    追问:

    我试过了,不行!

    回答:

     

    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    uses Unit2;

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Hide;
    Form2.Show;
    end;

    end.
    unit Unit2;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

    type
    TForm2 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    UserName: TEdit;
    Password: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form2: TForm2;

    implementation

    uses Unit1;

    {$R *.dfm}

    procedure TForm2.Button1Click(Sender: TObject);
    begin
    if (UserName.Text = '123') and (Password.Text = '456') then
    begin
    Form1.Show;
    Hide;
    end;
    end;

    end.

    追问:

    我用的是showmodal 就不行了,为什么呢!奇怪了!

    回答:

    用Showmodal的话,Unit2中的Hide需要改成close或Free;Unit1中的Form2.ShowModal之前要创建窗口,相对比较复杂一点。还是用Show-Hide这一对命令较好。

    ////////////////////////////////////////////////////////////////////

    这是我的,你参考一下:
    program Tools;

    uses
      Windows,
      Forms,
      ToolsMain in 'ToolsMain.pas' {Form1},
      Toolslogin in 'Toolslogin.pas' {Form2},
      logindatamodule in 'logindatamodule.pas' {DataModule1: TDataModule};

    {$R *.res}

    begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm2, Form2);
      Application.CreateForm(TDataModule1, DataModule1);
      //禁止显示主窗口
      application.ShowMainForm:=false;
      //显示登录窗口
      form2.Showmodal;
      application.Title:='因公护照、通行证工具';
      Application.Run;
    end.

  • 相关阅读:
    android 的权限
    做android遇到有问题有感
    帮人写的 论文 C语言的 学生管理系统
    android 服务器的 mysql 查询悲剧
    android开发遇到的问题
    想和各位技术高人材交流技术特建了相关的QQ群
    Invalid token '44' in input string
    设置PLSQL Developer访问本机64位Oracle
    SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作……错误:3219……”的解决方法
    C#的JSON开发包 LitJSON
  • 原文地址:https://www.cnblogs.com/hssbsw/p/3153294.html
Copyright © 2011-2022 走看看