最近在做一个管理方面的软件,初学者。但每次都是处在看代码的阶段,实际自己动手做的时候还是遇到很多问题,最近就是在做一个登录界面的时候就如何与数据库想连的时候出了问题,哪位能给出你们的思想思路和源代码吗?如果有的话我送100分,(不但是要源代码,最主要是写下你们作这方面的思路了,代码我倒是看过一些了,还有就是涉及到权限管理方面的).例如:假设就一个project工程文件,在执行project.exe是调出login单元窗口只有填写正确的用户名和密码之后才能进入相应的界面,如进入main单元,各位大侠来谈谈吧,我是初学者!!还有就是如何实现动态设置ODBC,而不需要通过控制面板里面去设计?如何实现用户能够保存密码,免得下次再次输入?
解决方案 »
- 关于登陆窗体的控制
- Dephi2007下DBGridEh属性EndEllipsis问题?
- 各位大侠,来俺就给分!程序中的最后的唯一问题
- 怎么样在同一个Socket收发不同结构的包?
- DELPHI中ACCESS的共享冲突问题 已经问过一次了 但是没有人解答啊 急急急急
- 关于将AND运算符应用到有符号数值的运算问题(在线)
- ListView滚动的问题
- 我使用NetValidateName() API函数,为何总是返回1780?
- 怎么编程得到NT下的密码?
- 一个关于热键的 简单问题?
- intraweb的datamodoul里怎么用ado数据库连接呢?
- 自动计划(autoplan)源代码***强烈推荐
主要用到的组件ADOTable、Label、Edit、Button等
在SQL2000中建立了一个名字为USERS的数据表字段包括name password
以下几个程序类同:
主要代码如下:
var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.FormActivate(Sender: TObject);
begin
edit1.Text := ''; //runtime
edit2.Text := '';
x := 0;
adotable1.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Students;Data Source=(local)';
adotable1.TableName := 'USERS';
adotable1.Open;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
adotable1.Close;
close;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
//检测用户名是否输入
if trim(edit1.Text) = '' then
begin
showmessage('请输入用户名!');
edit1.SetFocus;
exit;
end;
//检测密码是否输入
if trim(edit2.text) = '' then
begin
showmessage('请输入密码!');
edit2.SetFocus;
exit;
end;
//从ADOTable1记录集中查找合法的用户
adotable1.First;
while not adotable1.Eof Do
begin
if trim(edit1.Text) = trim(ADOTable1.fieldbyname('Name').AsString) then
break;
adotable1.MoveBy(1);
end;
//判断是否为合法用户
if ADOTable1.Eof then
begin
showmessage('你输入的用户非法!');
edit1.SetFocus;
exit;
end;
//判断用户密码输入是否正确
if trim(edit2.text) <> trim(ADOTable1.FieldByName('Password').AsString) then
begin
x := x + 1;
if x = 3 then
begin
showmessage('密码输入错误三次,程序退出!');
close;
end;
showmessage('密码输入错误!');
edit2.SetFocus;
exit;
end;
//打开系统主窗体
form1.Hide;
form2.ShowModal;
end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
edit2.SetFocus;
end;procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
button1.SetFocus;
end;end.
-----------
program Project1;uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};{$R *.res}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
form1.Hide;
form2.ShowModal;
Application.Run;
end.
--------------form2加入代码procedure TForm2.Button1Click(Sender: TObject);
begin
if edit1.Text<>'yes' then
application.Terminate
else
form1.Show;
close;
end;
------------------------------------------------
就有了
uses Registry;\\---------------------------------------加入
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin
with TRegistry.Create do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey( 'SOFTWARE\XXXXXXXX',True);
WriteString('olddate','345345345');
CloseKey;
Free;end;end;procedure TForm1.Button2Click(Sender: TObject);
var s:string;
begin
with TRegistry.Create do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey( 'SOFTWARE\XXXXXXXX',True);
s:=readString('olddate');
CloseKey;
Free;
showmessage(s);
end;
end;end.
把xxxx换成HKEY_CURRENT_USER\Software\ODBC\ODBC.INI对应的值就可以了
密码信息可以保存在注册表或者其他文件中!
期待着: flyman307() 的代码和文档。
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
form1.Hide;
form2.ShowModal;
Application.Run;
end.这段代码在哪个文件下倒是忘了,我总是要先删掉那个主单元如main再去打开project工程文件才能找到,然后再从回收站还原main单元,还修改form1.hide form2.showmodal不好意思啊~~~初学的菜鸟!!不适合搞计算机的菜鸟啦^-^^-^^-^^-^^-^^-^
至于登陆窗口你在project里写就可以了,上面有说清楚
我有程序 不过太大了!没办法发给你!
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