图二 修改各个属性如下表 对象 Label1 Label2 Label3 DataSource1 ADOTable1 Edit1 DBLookupComboBox1 属性 Caption Caption Caption Dataset Connection PasswordChar ListSource 属性值 欢迎进入 用户名: 用户密码: ADOTable1 DataModule1.ADOConnection1 * DataSource1 设置DBLookupComboBox1的KeyFiled为“用户名”,ListFiled
为“用户名”涉及到的Label与Edit一类的字体,颜色,字体大小等在左下方的Object Inspector 中的Font中设置;
9. 再新建一个窗体form3 这时设置主窗体为form3,如果不设置,则默认主窗体为form2;
点击Option设置主窗体为form3,如果不设置,则会出错(如果主窗体是form2是,当进入form3时 form2隐藏 关闭form3时不会关闭主程序,程序仍在运行)。
在这里实现的是主窗体是form3,在程序开始时,form3创建显示然后隐藏弹出form2 显示登录窗口 登录进入后进入form3 后,关闭form3可以关闭整个程序。
方法:在主菜单View中浏览 View Unit 选中 Project1 在Application.Run;
前
面
加
上
两
句
:
Application.ShowMainForm:=false;
form2.Show;
意思是:主窗体创建时隐藏,让form2显示 form2的系统按钮不能用即设置 form2 的 Borderlcons 中的biSystemMenu (Object Inspector)为false
10.1下面编写点击取消按钮后的产生的事件 procedure TForm2.Button2Click(Sender: TObject); begin
application.Terminate;//程序终止; end;
10.2 下面编写点击确定按钮后产生的事件
procedure TForm2.Button1Click(Sender: TObject); var
password:string; begin
if length(DBLookupComboBox1.Text)=0 then
begin
if messagedlg('你没有输入用户名是否现在输入',mtconfirmation,[mbyes,mbno],0)=mrno then begin
messagebox(handle,'不存在该用户,系统关闭','warning(i)',64); application.Terminate; end;
end;//程序的意思是当点击确定按钮后检查DBLookupComboBox1.Text中的内容是否为空,如果为空,则弹出对话框问是否现在输入用户名,如果选择no则程序关闭。// if length(DBLookupComboBox1.Text)<>0 then begin
DataModule1.ADOQuery1.SQL.Clear;
DataModule1.ADOQuery1.SQL.Add('select * from 登录 where 用户名='''+DBLookupComboBox1.text+'''' ); DataModule1.ADOQuery1.Open;
password:=DataModule1.ADOQuery1.Fieldbyname('
密
码
').AsString;//如果DBLookupComboBox1.Text中的内容不为空则 启动查询控件在表中查询对应的名字的记录,并将该记录所对应的密码取出来赋值给password// if (Edit1.Text=password) then begin form3.Show;
end;//取值出来与对应表中的密码比较 相等则显示主窗体// if (Edit1.Text<>password )and (times <>3) then begin
form2.Edit1.Clear; times:=times+1; if
messagedlg('
密
码
错
误
是
否
重
新
输
入
',mtconfirmation,[mbyes,mbno],0)=mrno then begin
messagebox(handle,'密码错误,系统关闭','warning(i)',64); application.Terminate; end;
end;//检查到Edit1.Text与password中的内容不等并且输入的次数小于3 执行 弹出对话框 询问是否要重新输入密码,如果是则输入次数加1,如果不是,则程序终止//
if (Edit1.Text<>password) and (times >=3) then begin
messagebox(handle,'错误输入超过三次,系统关闭','错误',mb_iconwarning); application.Terminate;
end;//输入密码不同并且输入次数超过三次,程序停止// end;//这个end是第一个if 结束 end;//按钮事件结束。
注释:times在form2 窗体被创建时应该赋值即 procedure TForm2.FormCreate(Sender: TObject); begin times:=0; end;
综合上面的例子下面讲述一个小型的超市收银系统