有誰可以提供用戶登錄的程序供參考嗎﹖

解决方案 »

  1.   

    unit utLogin;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons;type
      TfrmLogin = class(TForm)
        Label1: TLabel;
        Label2: TLabel;
        edt_Password: TEdit;
        bbtn_ok: TBitBtn;
        bbtn_Cancel: TBitBtn;
        cb_UserID: TComboBox;
        procedure FormCreate(Sender: TObject);
        procedure bbtn_okClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      frmLogin: TfrmLogin;implementationUses
      utDmRsda,utMain;
    {$R *.dfm}procedure TfrmLogin.FormCreate(Sender: TObject);
    begin
      cb_UserID.Clear;
      DmRsda.aqry_right.Close;
      DmRsda.aqry_right.SQL.Clear;
      DmRsda.aqry_right.SQL.Add('select distinct userid from rights');
      DmRsda.aqry_right.Open;
      If DmRsda.aqry_right.RecordCount<>0 then
        begin
          DmRsda.aqry_right.First;
          While not DmRsda.aqry_right.Eof do
            begin
              cb_userid.Items.Add(DmRsda.aqry_right.FieldByName('userid').AsString);
              DmRsda.aqry_right.Next;
            end;
        end;
    end;procedure TfrmLogin.bbtn_okClick(Sender: TObject);
    Var
      i,j,iUserID:integer;
      sPassword,sParent,sChild:String;
    begin
      iUserID := StrToInt(cb_UserID.Text);
      sPassword := Trim(edt_password.Text);
      Dmrsda.rsda.Close;
      Dmrsda.rsda.SQL.Clear;
      DmRsda.rsda.SQL.Add('Select bh,zc from employee where bh=:bh and zc=:zc');
      DmRsda.rsda.Parameters[0].Value := iUserID;
      DmRsda.rsda.Parameters[1].Value := sPassword;
      DmRsda.rsda.Open;
      If not(DmRsda.rsda.RecordCount=1) then
         Application.MessageBox('非法的用户名称或密须,禁止登陆!','Login Error',mb_OK+mb_iconinFormation)
      else
      begin
        For i := 0 to frmMain.mm_menu.Items.Items[0].Count-1 do
          begin
          showMessage(IntTostr(frmMain.mm_menu.Items.Items[0].Count-1));
            sParent := frmMain.mm_menu.Items.Items[0].Items[i].Caption;
            For j :=0 to frmMain.mm_menu.Items.Items[0].Items[i].Items[j].Count-1 do
              begin
            showMessage(IntTostr(frmMain.mm_menu.Items.Items[0].Items[i].Items[j].Count-1));
                sChild := frmMain.mm_menu.Items.Items[0].Items[i].Items[j].Caption;
                DmRsda.aqry_right.Close;
                DmRsda.aqry_right.SQL.Clear;
                DmRsda.aqry_right.SQL.Add('Select * from rights where bh=:bh and menuitem=:menu');
                DmRsda.aqry_right.Parameters[0].Value := iUserID;
                DmRsda.aqry_right.Parameters[1].Value := sChild;
                DmRsda.aqry_right.Open;
                If DmRsda.aqry_right.RecordCount=1 then
                   frmMain.mm_menu.Items.Items[0].Items[i].Items[j].Enabled := True
                else
                   frmMain.mm_menu.Items.Items[0].Items[i].Items[j].Enabled := False;
              end;
          end;
      end;
    end;
    end.  
    //还没写完的一段代码应该思路可以参考!