unit Login_Unit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, ComCtrls, StdCtrls, DB, ADODB;type
TLogin_Form = class(TForm)
StatusBar1: TStatusBar;
Image1: TImage;
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Name_Edit: TEdit;
Password_Edit: TEdit;
ADOQuery1: TADOQuery;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure Password_EditKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;var
Login_Form: TLogin_Form;implementation
uses Main_unit;//表示要访问主窗体的内容;{$R *.dfm}
//“取消”按钮的单击事件;
procedure TLogin_Form.Button2Click(Sender: TObject);
begin
close;//关闭窗体;
end;
//“确定”事件 按钮的单击事件;
procedure TLogin_Form.Button1Click(Sender: TObject);
var
aname,apassword,sqlstr:string;
a,b:integer;begin
//判断是否有输入;
if(Length(Trim(Name_Edit.Text))>0)or(Length(Trim(Password_Edit.Text))>0)then
begin
aname:=Trim(Name_Edit.Text);
apassword:=Trim(Password_Edit.Text);
//查询用户名,密码的正确性,并取得权限表;
sqlstr:='select b*from [user] a.[qxb] b where (a.yhm='''+aname+''')and(a.mm='''+apassword+''')and(a.yhm=b.yhm)order by b.cdx';
begin
//with adoquery1.Create(nil) do;
try
//数据库的连接使用Main_From的 Adoquery1来完成;
adoquery1.Connection:=Main_Form.ADOConnection1;//调用主窗体的查询控件;
adoquery1.SQL.Clear;//清除上一次的SQL语句;
adoquery1.SQL.Add(sqlstr);//添加查询语句;
adoquery1.Active:=True;//打开其对应的表
{except
showMessage('数据库没有打开!');
end;} //判断是否有对应用户;
if adoquery1.RecordCount>0 then
begin
//First:
while not adoquery1.Eof do//当数据集的内容不为空时,执行begin end 内的代码;
begin
a:=StrToInt(copy(FieldByName('cdx').AsString,1,1));
b:=StrToInt(copy(FieldByName('cdx').AsString,2,2));
//是拥有权限的主窗体菜单可用;
Main_Form.MainMenu1.Items[a].Visible:=True;
Main_Form.MainMenu1.Items[a].Item[b].Visible:=True;
Next;
end;
// 关闭登录窗口;
Login_Form.Close;
//主窗体状态栏显示登录用户名;
Main_Form.StatusBar1.SimpleText:=aname;
//主窗体全局变量dlname保存登录用户名;
Main_Form.dlname:=aname;
end
else
begin
ShowMessage('请确认登录的用户名和密码是否正确!');
Name_Edit.SetFocus;
Name_Edit.SelectAll;
end;
end
else
begin
ShowMessage('请输入登录用户名和密码!');
Name_Edit.SelectAll;
Password_Edit.SelectAll;
end;
//end;
//end;
end;
procedure TLogin_Form.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//使主窗体的“登录系统”菜单项可用;
Main_Form.N2.Enabled:=True;
//从内存中释放窗体,否则对于MDIChild窗口关闭无效;
Action:=CaFree;
end;
//窗体按键按下事件,使用<Enter>键代替 <Tab>键;
procedure TLogin_Form.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then //判断是否按下<Enter>键;
begin
key:=#0;
//焦点移动到下一个组件;
Perform(WM_NEXTDLGCTL,0,0);
end;end;
//密码输入框按键按下事件,可能会被窗体按键按下事件屏蔽;
procedure TLogin_Form.Password_EditKeyPress(Sender: TObject;
var Key: Char);
begin
//如果按下的是<Enter>键,执行确定按钮单击事件;
if key=#13 then Button1.Click;
end;end.
[Error] Login_Unit.pas(77): Undeclared identifier: 'FieldByName'
[Error] Login_Unit.pas(77): Incompatible types
[Error] Login_Unit.pas(77): Missing operator or semicolon
[Error] Login_Unit.pas(90): EXCEPT or FINALLY expected
[Error] Login_Unit.pas(91): 'END' expected but 'ELSE' found
[Error] Login_Unit.pas(92): Missing operator or semicolon
[Fatal Error] Main_Unit.pas(43): Could not compile used unit 'Login_Unit.pas'
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, ComCtrls, StdCtrls, DB, ADODB;type
TLogin_Form = class(TForm)
StatusBar1: TStatusBar;
Image1: TImage;
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Name_Edit: TEdit;
Password_Edit: TEdit;
ADOQuery1: TADOQuery;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure Password_EditKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;var
Login_Form: TLogin_Form;implementation
uses Main_unit;//表示要访问主窗体的内容;{$R *.dfm}
//“取消”按钮的单击事件;
procedure TLogin_Form.Button2Click(Sender: TObject);
begin
close;//关闭窗体;
end;
//“确定”事件 按钮的单击事件;
procedure TLogin_Form.Button1Click(Sender: TObject);
var
aname,apassword,sqlstr:string;
a,b:integer;begin
//判断是否有输入;
if(Length(Trim(Name_Edit.Text))>0)or(Length(Trim(Password_Edit.Text))>0)then
begin
aname:=Trim(Name_Edit.Text);
apassword:=Trim(Password_Edit.Text);
//查询用户名,密码的正确性,并取得权限表;
sqlstr:='select b*from [user] a.[qxb] b where (a.yhm='''+aname+''')and(a.mm='''+apassword+''')and(a.yhm=b.yhm)order by b.cdx';
begin
//with adoquery1.Create(nil) do;
try
//数据库的连接使用Main_From的 Adoquery1来完成;
adoquery1.Connection:=Main_Form.ADOConnection1;//调用主窗体的查询控件;
adoquery1.SQL.Clear;//清除上一次的SQL语句;
adoquery1.SQL.Add(sqlstr);//添加查询语句;
adoquery1.Active:=True;//打开其对应的表
{except
showMessage('数据库没有打开!');
end;} //判断是否有对应用户;
if adoquery1.RecordCount>0 then
begin
//First:
while not adoquery1.Eof do//当数据集的内容不为空时,执行begin end 内的代码;
begin
a:=StrToInt(copy(FieldByName('cdx').AsString,1,1));
b:=StrToInt(copy(FieldByName('cdx').AsString,2,2));
//是拥有权限的主窗体菜单可用;
Main_Form.MainMenu1.Items[a].Visible:=True;
Main_Form.MainMenu1.Items[a].Item[b].Visible:=True;
Next;
end;
// 关闭登录窗口;
Login_Form.Close;
//主窗体状态栏显示登录用户名;
Main_Form.StatusBar1.SimpleText:=aname;
//主窗体全局变量dlname保存登录用户名;
Main_Form.dlname:=aname;
end
else
begin
ShowMessage('请确认登录的用户名和密码是否正确!');
Name_Edit.SetFocus;
Name_Edit.SelectAll;
end;
end
else
begin
ShowMessage('请输入登录用户名和密码!');
Name_Edit.SelectAll;
Password_Edit.SelectAll;
end;
//end;
//end;
end;
procedure TLogin_Form.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//使主窗体的“登录系统”菜单项可用;
Main_Form.N2.Enabled:=True;
//从内存中释放窗体,否则对于MDIChild窗口关闭无效;
Action:=CaFree;
end;
//窗体按键按下事件,使用<Enter>键代替 <Tab>键;
procedure TLogin_Form.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then //判断是否按下<Enter>键;
begin
key:=#0;
//焦点移动到下一个组件;
Perform(WM_NEXTDLGCTL,0,0);
end;end;
//密码输入框按键按下事件,可能会被窗体按键按下事件屏蔽;
procedure TLogin_Form.Password_EditKeyPress(Sender: TObject;
var Key: Char);
begin
//如果按下的是<Enter>键,执行确定按钮单击事件;
if key=#13 then Button1.Click;
end;end.
[Error] Login_Unit.pas(77): Undeclared identifier: 'FieldByName'
[Error] Login_Unit.pas(77): Incompatible types
[Error] Login_Unit.pas(77): Missing operator or semicolon
[Error] Login_Unit.pas(90): EXCEPT or FINALLY expected
[Error] Login_Unit.pas(91): 'END' expected but 'ELSE' found
[Error] Login_Unit.pas(92): Missing operator or semicolon
[Fatal Error] Main_Unit.pas(43): Could not compile used unit 'Login_Unit.pas'
FieldByName是属于adoquery的属性,你没有指明FieldByName的所属,所以提示未定义,前面加上所属数据集名字,比如adoquery1.FieldByName
[Error] Login_Unit.pas(77): Incompatible types
原因如上
[Error] Login_Unit.pas(77): Missing operator or semicolon
原因如上
[Error] Login_Unit.pas(90): EXCEPT or FINALLY expected
try..Finally..except的匹配出问题,或者不完整
[Error] Login_Unit.pas(91): 'END' expected but 'ELSE' found
仔细检查begin。。end是否完整
[Error] Login_Unit.pas(92): Missing operator or semicolon
都是操作符,好好检查吧
while not adoquery1.Eof do//当数据集的内容不为空时,执行begin end 内的代码;
begin
a:=StrToInt(copy(FieldByName('cdx').AsString,1,1));
b:=StrToInt(copy(FieldByName('cdx').AsString,2,2));
//是拥有权限的主窗体菜单可用;
Main_Form.MainMenu1.Items[a].Visible:=True;
Main_Form.MainMenu1.Items[a].Item[b].Visible:=True;
Next;
end;
~~~~(>_<)~~~~