首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi登录代码有关问题

2012-02-23 
delphi登录代码问题unit Login_UnitinterfaceusesWindows, Messages, SysUtils, Variants, Classes, Grap

delphi登录代码问题
unit Login_Unit;

interface

uses
  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'

[解决办法]
[Error] Login_Unit.pas(77): Undeclared identifier: 'FieldByName'
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
都是操作符,好好检查吧
[解决办法]

Delphi(Pascal) code
with AdoQuery1 do   // 加这句..................................................while not adoquery1.Eof do//当数据集的内容不为空时,执行begin end 内的代码;begina:=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; 

热点排行