uUser.pas
上传用户:lzd18710
上传日期:2009-11-26
资源大小:3595k
文件大小:5k
源码类别:

通讯编程

开发平台:

Visual Basic

  1. unit uUser;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls, Grids, ValEdit,zkemkeeper_TLB;
  6. type
  7.   TfrmUser = class(TForm)
  8.     edtPIN: TEdit;
  9.     Label1: TLabel;
  10.     GroupBox1: TGroupBox;
  11.     Label2: TLabel;
  12.     Label3: TLabel;
  13.     edtPwd: TEdit;
  14.     chkEnabled: TCheckBox;
  15.     cboPrivilege: TComboBox;
  16.     Label4: TLabel;
  17.     edtName: TEdit;
  18.     GroupBox2: TGroupBox;
  19.     vleTemps: TValueListEditor;
  20.     Button7: TButton;
  21.     Button8: TButton;
  22.     Label5: TLabel;
  23.     btnLoadDev: TButton;
  24.     btnSaveDev: TButton;
  25.     btnDelDev: TButton;
  26.     btnLoadFile: TButton;
  27.     btnSaveFile: TButton;
  28.     btnDelFile: TButton;
  29.     Button9: TButton;
  30.     Button10: TButton;
  31.     OpenDialog1: TOpenDialog;
  32.     SaveDialog1: TSaveDialog;
  33.     procedure btnLoadDevClick(Sender: TObject);
  34.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  35.     procedure btnSaveDevClick(Sender: TObject);
  36.     procedure btnDelDevClick(Sender: TObject);
  37.     procedure FormCreate(Sender: TObject);
  38.     procedure Button10Click(Sender: TObject);
  39.     procedure Button7Click(Sender: TObject);
  40.     procedure Button9Click(Sender: TObject);
  41.   private
  42.     Users: tstrings;
  43.     function LoadDevUsers(Users: tstrings): integer;
  44.     { Private declarations }
  45.   public
  46.     { Public declarations }
  47.     CZKEM1: TCZKEM;
  48.     DevID: integer;
  49.   end;
  50. function ShowUserForm(CZKEM1: TCZKEM; DevID: integer):TfrmUser;
  51. implementation
  52. uses uselone,comsdktest;
  53. {$R *.dfm}
  54. function ShowUserForm(CZKEM1: TCZKEM; DevID: integer): TfrmUser;
  55. var
  56.   frmUser: TfrmUser;
  57. begin
  58.   frmUser:= TfrmUser.Create(Application);
  59.   result := frmUser;
  60.   frmUser.CZKEM1 := CZKEM1;
  61.   frmUser.DevID := DevId;
  62.   result.ShowModal;
  63. end;
  64. function TfrmUser.LoadDevUsers(Users: tstrings): integer;
  65. var
  66.   dwEnrollNumber, dwMachinePrivilege: integer;
  67.   Enable: WordBool;
  68.   UName, UPwd: widestring;
  69. begin
  70.   Users.clear;
  71.   result:=0;
  72.   if CZKEM1.ReadAllUserID(DevID) then
  73.   begin
  74.     while CZKEM1.GetAllUserInfo(DevID, dwEnrollNumber, UName, UPwd,
  75.       dwMachinePrivilege, Enable) do
  76.     begin
  77.       Users.Add(format('%-5d  %s',[dwEnrollNumber, UName]));
  78.       inc(result);
  79.     end;
  80.   end;
  81. end;
  82. procedure TfrmUser.btnLoadDevClick(Sender: TObject);
  83. var
  84.   uEnabled: WordBool;
  85.   UName, UPwd: widestring;
  86.   uPrivilege, i, len: integer;
  87.   tmp: array[0..2047]of byte;
  88. begin
  89.   if trim(edtPIN.Text)='' then
  90.   begin
  91.     i := LoadDevUsers(Users);
  92.     if i>0 then
  93.     begin
  94.       i := 0;
  95.       edtPIN.Text:=SelectItem(Users, i);
  96.     end;    
  97.   end;
  98.   edtPIN.Text := trim(copy(edtPIN.Text,1,5));
  99.   if edtPIN.Text='' then exit;
  100.   CZKEM1.GetUserInfo(DevID, StrToInt(edtPIN.Text),
  101.     UName, UPwd, uPrivilege, uEnabled);
  102.   edtName.Text := UName;
  103.   edtPwd.Text := UPwd;
  104.   cboPrivilege.ItemIndex := uPrivilege mod cboPrivilege.Items.Count;
  105.   chkEnabled.Checked := uEnabled;
  106.   for i := 0 to 9 do
  107.   begin
  108.     Len:=0;
  109.     zeromemory(@tmp[0],2048);
  110.     len := 2048;
  111.     if CZKEM1.GetUserTmp(DevId, StrToInt(edtPIN.Text), i, Tmp[0], Len) then
  112.     begin
  113.       vleTemps.Values[inttostr(i)]:=EncodeData(Tmp[0], Len);
  114.     end;
  115.   end;
  116. end;
  117. procedure TfrmUser.FormClose(Sender: TObject; var Action: TCloseAction);
  118. begin
  119.   Action := caFree;
  120. end;
  121. procedure TfrmUser.btnSaveDevClick(Sender: TObject);
  122. begin
  123.   CZKEM1.SetUserInfo(DevId, StrToInt(edtPin.Text), edtName.Text,
  124.     edtPwd.Text, cboPrivilege.ItemIndex, chkEnabled.Checked);
  125. end;
  126. procedure TfrmUser.btnDelDevClick(Sender: TObject);
  127. begin
  128.   CZKEM1.DeleteEnrollData(DevId, strToInt(edtPin.Text), DevId, 12);
  129. end;
  130. procedure TfrmUser.FormCreate(Sender: TObject);
  131. begin
  132.   Users := tstringlist.Create;
  133. end;
  134. procedure TfrmUser.Button10Click(Sender: TObject);
  135. var
  136.   tmp: string;
  137.   errno: integer;
  138. begin
  139.   if OpenDialog1.Execute then
  140.   begin
  141.     tmp:=LoadFile(OpenDialog1.Files[0]);
  142.     if (length(tmp)>100) and (length(tmp)<2048) then
  143.     begin
  144.       if not CZKEM1.SetUserTmp(DevID, StrToInt(edtPIN.Text), vleTemps.Row-1, pbyte(@tmp[1])^) then
  145.       begin
  146.         CZKEM1.GetLastError(errno);
  147.         MessageDlg(Format('Error to %s : %d!',['SetUserTmp', ErrNo]), mtError, [mbCancel], 0);
  148.       end;
  149.     end;
  150.   end;
  151. end;
  152. procedure TfrmUser.Button7Click(Sender: TObject);
  153. var
  154.   Data, Data2: string;
  155.   Size: integer;
  156. begin
  157.   if not SaveDialog1.Execute then exit;
  158.   Data := vleTemps.Cells[1,vleTemps.Row];
  159.   if Data='' then exit;
  160.   Data := decodedata(Data);
  161.   SaveFile(SaveDialog1.Files[0], Data);
  162.   data2 := stringofchar(#0, 2048);
  163.   if CZKEM1.FPTempConvert(pbyte(@Data[1])^, Pbyte(@Data2[1])^, Size) then
  164.   begin
  165.     setlength(Data2, Size);
  166.     SaveFile(SaveDialog1.Files[0]+'.old', Data2);
  167.   end;
  168. end;
  169. procedure TfrmUser.Button9Click(Sender: TObject);
  170. begin
  171.   CZKEM1.DelUserTmp(DevId, StrToInt(edtPIN.Text), vleTemps.Row-1)
  172. end;
  173. end.