我做一个有登陆的程序,但是老是作不好。请大家帮忙。(下面是主窗体文件)
有错误。帮我调式下。注意:我用了别人的vcl控件
unit main;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, XPMenu, AHMControls, AHMTOfficeButton, AHMTLabel, StdCtrls, DB,
  DBTables, ADODB;type
  Tmainform = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    AHMLabel1: TAHMLabel;
    AHMOfficeButton1: TAHMOfficeButton;
    AHMOfficeButton2: TAHMOfficeButton;
    AHMOfficeButton3: TAHMOfficeButton;
    AHMOfficeButton4: TAHMOfficeButton;
    Query1: TQuery;
    DataSource1: TDataSource;
    Table1: TTable;
    Table1UserId: TSmallintField;
    Table1UserName: TStringField;
    Table1Class: TSmallintField;
    Table1Userpwd: TStringField;
    procedure AHMOfficeButton1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure AHMOfficeButton4Click(Sender: TObject);  private
    { Private declarations }
  public
    { Public declarations }
    loged : integer;
    username , userpwd :string;
    Function CheckUser (AUsername , AUserpwd :string) : integer;
    procedure init(p :integer);
    Function GetFilePath(FilePath : string) :string;
    function GetfileName(FileName : string) :string;
    function GetFileExt(FileExt : string) :string;
  end;var
  mainform: Tmainform;implementation
uses
loginFR, uGloabVar ,uMain;{$R *.dfm}procedure Tmainform.AHMOfficeButton1Click(Sender: TObject);
begin
    loged := -1;
    if Loged = -1 then
      begin
        if LoginF.ShowModal = mrok then
        begin
         UserName := LoginF.flatEdit1.Text;
         UserPwd := LoginF.flatEdit2.Text;
         Loged := CheckUser(UserName,UserPwd);
         end
         else Loged := -1;
    if Loged <> -1 then
        begin
        Init(Loged);
        AnwerF := TAnwerF.Create(nil);
        end;     end;
end;procedure Tmainform.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   action := cafree;
end;procedure Tmainform.AHMOfficeButton4Click(Sender: TObject);
begin
    mainform.Close;
end;function Tmainform.CheckUser(AUsername, AUserpwd: string): integer;
begin
  try
    //Query1 := TAdoQuery.Create(nil);
    //Query.DatabaseName :=ExtractFileName(GetFilePath+'\data');
    with query1 do
    begin
   // DatabaseName := 'User';
    SQL.Clear;
    SQL.Add('select UserName from "User.db" where Username = :Username');
    SQL.Add('select userpwd from "User.db" where UserPwd = :userpwd');
    ParamByName('UserName').AsString := AUserName;
    Prepare;
    ExecSQL;
    //Close;
    Open;
    if RecordCount = 0 then
    begin
      MessageDlg('用户名错误',mtError,[mbok],0);
      Result := -1;
      Exit;                         //检查用户名;
    end else begin
      if FieldByName('UserPwd').AsString <> AUserPwd then
      begin
        MessageDlg('用户名或口令错误',mtError,[mbok],0);
        Result := -1;
        Exit;
      end
      else Result := Query1.FieldByName('权限').AsInteger;
    end;
    Close;
    Free;
    end;
  except
     Result := -1;
     MessageDlg('连接数据库出错',mtError,[mbok],0);
  end;
end;procedure Tmainform.init(p: integer);
begin
    case p of
    -1 : begin         end;
     0:  begin         end;
     1:  begin         end;
     end;
//定义各种用户的不同操作权限
end;
function Tmainform.GetFileExt(FileExt: string): string;
begin
    result := extractfileext(application.ExeName);
end;function Tmainform.GetfileName(FileName: string): string;
begin
    result := ExtractFileName(application.ExeName);
end;function Tmainform.GetFilePath(FilePath: string): string;
begin
    result := extractfilepath(application.ExeName);
end;end.
······························

解决方案 »

  1.   

    XPMenu, AHMControls, AHMTOfficeButton, AHMTLabel用了这几个东西吧。
    可以这样:不要xpmenu,它是一个菜单控件,可以不要。
    AHMTOfficeButton→Button
    AHMControls→Controls
    AHMTLabel→Label
    剩下的就和原来的一样了,老兄帮我解决问题呀!
      

  2.   

    SQL.Add('select UserName from "User.db" where Username = :Username');
    SQL.Add('select userpwd from "User.db" where UserPwd = :userpwd');
    ParamByName('UserName').AsString := AUserName;
    这个地方我不知道你是什么意思!但绝对不能这样用 如果你要是查用户名和密码的话就不能这样用。我建议你这样  
    sql.add('select username,userpwd from user where Username = :Username and UserPwd = :userpwd');
    ParamByName('UserName').AsString := AUserName;
    ParamByName('UserPwd').AsString := *;
    不知道我回答的对不对,另外不管你用不用第三方控件,只要你把它的属性、事件、方法用对了也没什么问题
      

  3.   

    还有个很菜的问题。
    好想我的问题出现在连接上。
    我的数据表在..\data里,有个表为User我在
    function  Tmainform.CheckUser(AUsername,  AUserpwd:  string):  integer;  
    中怎么加上些什么呢?在线等待。