如何在主Form出现之前,弹出密码验证From,Cancel就退出程序,Ok后密码正确才出现主Form

ie4888 2001-12-27 05:02:58
...全文
156 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我给你一个LOGINFORM的例子:
unit LoginFrm;

interface

uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls;

type
TLoginForm = class(TForm)
lblEnterPassword: TLabel;
lblEnterName: TLabel;
edtName: TEdit;
edtPassword: TEdit;
btnOK: TButton;
btnCancel: TButton;
public
end;

function GetLoginParams(ALoginParams: TStrings): Boolean;

implementation

{$R *.DFM}

function GetLoginParams(ALoginParams: TStrings): Boolean;
var
LoginForm: TLoginForm;
begin
Result := False;
LoginForm := TLoginForm.Create(Application);
try
if LoginForm.ShowModal = mrOk then
begin
ALoginParams.Values['USER NAME'] := LoginForm.edtName.Text;
ALoginParams.Values['PASSWORD'] := LoginForm.edtPassWord.Text;
Result := True;
end;
finally
LoginForm.Free;
end;
end;

end.
  • 打赏
  • 举报
回复
我同意加非猫的方法,我以前都是这么做的.
qhuojun 2001-12-27
  • 打赏
  • 举报
回复
自己先做个登录窗体
在工程文件里先USES 那个单元
再如下写......
Application.Initialize;
frmlogon:= Tfrmlogon.Create(Application);
frmlogon.ShowModal;
frmlogon.Update;
if frmlogon.ModalResult = mrOK then
begin
frmlogon.Free;
frmlogon.Hide;
Application.CreateForm(TForm1, Form1);
.
.
.
Application.Run;
end;
bigchg 2001-12-27
  • 打赏
  • 举报
回复
procedure TLoginForm.btnLoginClick(Sender: TObject);
var
ComputerName: String;
CNameBuffer : PChar;
fl_loaded : Boolean;
CLen : ^DWord;
intLogin:Integer;

begin
//取得计算机名称
GetMem(CNameBuffer,255);
New(CLen);
CLen^:= 255;
fl_loaded := GetComputerName(CNameBuffer,CLen^);
if fl_loaded then
ComputerName := StrPas(CNameBuffer)
else
ComputerName := 'Unknown';
FreeMem(CNameBuffer,255);
Dispose(CLen);

//登录系统
if edtUser.Text='' then
begin
MessageBox(Self.Handle,'请输入用户!','提示',MB_OK+MB_ICONEXCLAMATION);
edtUser.SetFocus;
exit;
end;

if ComboBox1.items.Count>0 then
begin
if ComboBox1.ItemIndex=-1 then
begin
MessageBox(Self.Handle,'请选择帐套!','提示',MB_OK+MB_ICONEXCLAMATION);
ComboBox1.SetFocus;
exit;
end;
end;

//登录系统
if blnFirstLogin=False then dmlPreserve.scPreserve.AppServer.LogoutStatus(CurUserID);
dmlPreserve.scPreserve.AppServer.LoginStatus(edtUser.Text,edtPwd.Text,ComputerName,intLogin,curUserName);
Case intLogin of
0: //成功登录
begin
MessageBox(Self.Handle,'登录成功!','提示',MB_OK+MB_ICONEXCLAMATION);
Fini.WriteString('Preserve','LastUser',edtUser.Text);
Fini.WriteString('Preserve','LastAccount',ComboBox1.Text);
curAccount:=ComboBox1.Text;
MDIMainForm.sbrMain.Panels[3].Text:='当前帐套:'+ComboBox1.Text;
curUserID:=edtUser.Text;
MDIMainForm.sbrMain.Panels[2].Text:='操作用户:'+curUserName;
dmlPreserve.cdsusrUser.Close;
if blnFirstLogin=True then blnFirstLogin:=False;
Close;
end;
1:
begin
MessageBox(Self.Handle,'该用户不存在!','提示',MB_OK+MB_ICONEXCLAMATION);
edtUser.SetFocus;
end;
2:
begin
MessageBox(Self.Handle,'该用户不允许在此计算机上登录!','提示',MB_OK+MB_ICONEXCLAMATION);
edtUser.SetFocus;
end;
3:
begin
MessageBox(Self.Handle,'密码错误!','提示',MB_OK+MB_ICONEXCLAMATION);
edtPwd.SetFocus;
end;
4:
begin
MessageBox(Self.Handle,'该用户已经登录!','提示',MB_OK+MB_ICONEXCLAMATION);
edtUser.SetFocus;
end;
5:
begin
if MessageBox(Self.Handle,'该用户已经登录,是否强行登录?','提示',MB_YESNO+MB_ICONQUESTION)=mrNO then
edtUser.SetFocus;
end;
6:
begin
MessageBox(Self.Handle,'登录中遇到未知错误!','错误',MB_OK+MB_ICONEXCLAMATION);
edtUser.SetFocus;
end;
end;
end;
bigchg 2001-12-27
  • 打赏
  • 举报
回复
procedure TMDIMainForm.MDIMainFormOnActivate(Sender: TObject);
begin
LoginForm:=TLoginForm.Create(Self);
LoginForm.ShowModal ;
end;

procedure TLoginForm.btnCancelClick(Sender: TObject);
begin
Application.Terminate
end;
Linux2001 2001-12-27
  • 打赏
  • 举报
回复
为什么最近CSDN上的问题越来越简单啊!
又为什么CSDN上Delphi论坛上的问题,关于数据库方面的越来越多啊
长弓落日 2001-12-27
  • 打赏
  • 举报
回复
楼上: li_zhifu(东北人) 说的对,可惜来晚了!
王集鹄 2001-12-27
  • 打赏
  • 举报
回复
program Project1;

uses
Forms,
Dialogs,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
if InputBox('input', 'password', '') <> 'password' then Exit;
//把InputBox替换成你的口令窗体调用即可
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
  • 打赏
  • 举报
回复
你去检索一下,我曾经贴过.
newly 2001-12-27
  • 打赏
  • 举报
回复
可以在form的onshow事件中加入验证代码,验证成功就执行form.show,否则退出就行了。
kofxdm 2001-12-27
  • 打赏
  • 举报
回复
同意li_zhifu(东北人)

Application.initialize;
checkForm:=TcheckForm.create(Application);
checkForm.show;
....
....
....
....
满足条件:
CheckForm.free;
Application.run;
否则:
exit;
详细的自己试试吧
li_zhifu 2001-12-27
  • 打赏
  • 举报
回复
program Project1;

uses
Forms,
Dialogs,
Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

Var
Pass:String;

begin
Application.Initialize;
InputQuery('密码','请输入密码',Pass);
if Pass<>'OK' then Application.Terminate;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
limit 2001-12-27
  • 打赏
  • 举报
回复
可以把验证窗口设成启动窗口,验证通过了调用主窗口,不通过就直接close自己
li_zhifu 2001-12-27
  • 打赏
  • 举报
回复
在工程文件中做手脚

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧