用户登录

关于系统用户注销然后以另一用户身份登录的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.

posted on 2013-06-24 20:50  为人民服务  阅读(469)  评论(0编辑  收藏  举报