你的程序中错误很多
1、首先是表的字段名拼错;
procedure TLoginForm.Button1Click(Sender: TObject);
var
aname,apassword,sqlstr:string;
a,b:integer;
begin
try
MainForm.Database1.Open;
except
showMessage('数据库没有打开!');
end;
//有输入时,从数据库中检验用户信息
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 * from user a,qxb b where(a.name='''+aname+''')';
sqlstr:=sqlstr+'and(a.password='''+apassword+''')and(a.name=b.name)';
sqlstr:=sqlstr+'order by b.cdx';
with TQuery.Create(nil)do
try
Close;
//SessionName:=MainForm.Database1.SessionName; //不需要这段话
DatabaseName:=MainForm.Database1.DatabaseName;
SQL.Clear;
SQL.Add(sqlstr);
Open;
//验证通过,根据权限设置菜单项的可访问性
if RecordCount>0 then
begin
First;
while not Eof do
begin
a:=StrToInt(copy(FieldByName('cdx').AsString,1,1));
b:=StrToInt(copy(FieldByName('cdx').AsString,2,2));
MainForm.MainMenu1.Items.Items[a].Visible:=true;
MainForm.MainMenu1.Items.Items[a].Items[b].Visible:=true;
Next;
end;
//关闭登录窗口
LoginForm.Close;
//主窗体状态栏显示登录用户名
MainForm.StatusBar1.Panels[0].Text:=aname;
end
else
//验证不通过,提示错误信息
begin
ShowMessage('请确认登录的用户名和密码是否正确!!!');
Name_Edit.SetFocus;
Name_Edit.SelectAll;
end;
finally
Free;
end;
end
else
//无输入,提示错误信息
begin
ShowMessage('请输入登录用户名和密码!!!');
Name_Edit.SelectAll;
end;
end;
2、在Login的关闭事件中,修改如下
Action:=caFree;
3、main 中的StatusBar1控件,没有TStatusPanel对象,你在Login的确定事件中,写了
main.StatusBar1.Panels[0]:='XX'肯定是错误的,你可以在main窗体中,右击
StatusBar1控件,选择Panels Editor...,然后Add一个TStatusPanel对象就可以啦
最后祝你开心