📄 u_emp.pas
字号:
unit u_Emp;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls, ImgList, Menus,
cxLookAndFeelPainters, cxButtons;
type
TFrm_Emp = class(TForm)
Panel1: TPanel;
GroupBox2: TGroupBox;
GroupBox1: TGroupBox;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
CEmpList: TListView;
Panel5: TPanel;
CDevList: TListView;
Panel6: TPanel;
ImageList: TImageList;
cxButton1: TcxButton;
cxButton2: TcxButton;
cxButton3: TcxButton;
cxButton4: TcxButton;
cxButton5: TcxButton;
cxButton6: TcxButton;
cxButton7: TcxButton;
cxButton8: TcxButton;
cxButton9: TcxButton;
cxButton10: TcxButton;
cxButton11: TcxButton;
cxButton12: TcxButton;
procedure FormShow(Sender: TObject);
procedure cxButton4Click(Sender: TObject);
procedure cxButton1Click(Sender: TObject);
procedure cxButton2Click(Sender: TObject);
procedure cxButton8Click(Sender: TObject);
procedure cxButton7Click(Sender: TObject);
procedure cxButton5Click(Sender: TObject);
procedure cxButton6Click(Sender: TObject);
procedure cxButton12Click(Sender: TObject);
procedure cxButton11Click(Sender: TObject);
procedure cxButton9Click(Sender: TObject);
procedure cxButton10Click(Sender: TObject);
private
CurDevID: integer;
CurDevIP: string;
CurDevPort: integer;
CurDevPW: integer;
CurSpec: string;
aDevID: integer;
{ Private declarations }
function GetMainFormCheckItem:integer;
function UpdateUserInfoDBAndDev:boolean;
//procedure SetDevUserInfo(aDevID:integer);
public
{ Public declarations }
procedure RefreshDevUserInfo;
procedure RefreshDBUserInfo;
property EDevID: integer read aDevID write aDevID;
end;
var
Frm_Emp: TFrm_Emp;
implementation
uses u_MainForm, u_dm, u_ChildLoadData, u_AddEMP, u_Info;
{$R *.dfm}
function TFrm_Emp.UpdateUserInfoDBAndDev:boolean;
var aErrorID: integer;
dwMachineNumber: Integer;
dwEnrollNumber: Integer;
aName: WideString;
aPassword: WideString;
aPrivilege: Integer;
aEnabled: WordBool;
dwPassWord: integer;
dwEnrollCardNumber: integer;
CardNo: string;
aMsg:string;
begin
result := false;
CurDevID := GetMainFormCheckItem;
if CurDevID<=0 then
begin
application.MessageBox('请选择设备!','提示',MB_OK);
exit;
end;
if dm.GetDeviceInfo(CurDevID,CurDevIP,CurDevPort,CurDevPW,CurSpec) then
begin
if not frm_ChildLoadData.DeviceConnected(2,CurDevID,0,CurDevIP,CurDevPort,CurDevPW,0,aErrorID) then
begin
application.MessageBox('连接设备失败!请检查网络!','提示',MB_OK);
exit;
end
else
begin
with dm.temp do
begin
if Active then close;
sql.Text :='if not Exists(select * from sysobjects where name=''TempEmp'')'
+' Create table TempEmp ( '
+' EmpID int, '
+' EmpName nvarchar(50),'
+' EmpCard nvarchar(10),'
+' EmpIDM int,'
+' EmpNameM nvarchar(50),'
+' EmpCardM nvarchar(10))'
+' else'
+' Delete from TempEmp'
+' Insert into TempEmp select EmpID,EmpName,CardNo from Employee ';
Open;
end;
dwMachineNumber := CurDevID;
if frm_ChildLoadData.CZKEM1.ReadAllUserID(dwMachineNumber) then
while frm_ChildLoadData.CZKEM1.GetAllUserInfo(dwMachineNumber,
dwEnrollNumber,
aName,
aPassWord,
aPrivilege,
aEnabled) do
begin
end; //end while
end;//end 网络连接成功
end;//end if 得到IP
end;
procedure TFrm_Emp.RefreshDBUserInfo;
begin
CEmpList.Items.Clear;
with dm.temp do
begin
if active then close;
sql.Text := 'select EmpID,EmpName,CardNo from Employee';
Open;
while not eof do
begin
frm_info.RefreshInfo('正在刷新['+FieldByName('EmpName').AsString+']的信息');
with CEmpList.Items.Add do
begin
Caption := FieldByName('EmpID').AsString ;
Subitems.Add(FieldByName('EmpName').AsString);
Subitems.Add(FieldByName('CardNo').AsString);
end;
Next;
end;
close;
frm_info.CloseInfo;
end;
end;
procedure TFrm_Emp.RefreshDevUserInfo;
var aErrorID: integer;
dwMachineNumber: Integer;
dwEnrollNumber: Integer;
aName: WideString;
aPassword: WideString;
aPrivilege: Integer;
aEnabled: WordBool;
dwPassWord: integer;
dwEnrollCardNumber: integer;
CardNo: string;
aMsg:string;
begin
//CDevList.Items.Clear;
CurDevID := GetMainFormCheckItem;
if CurDevID<=0 then
begin
application.MessageBox('请选择设备!','提示',MB_OK);
exit;
end;
if dm.GetDeviceInfo(CurDevID,CurDevIP,CurDevPort,CurDevPW,CurSpec) then
begin
if not frm_ChildLoadData.DeviceConnected(2,CurDevID,0,CurDevIP,CurDevPort,CurDevPW,0,aErrorID) then
begin
application.MessageBox('连接设备失败!请检查网络!','提示',MB_OK);
exit;
end
else
begin
CDevList.Items.Clear;
dwMachineNumber := CurDevID;
aName := '';
if frm_ChildLoadData.CZKEM1.ReadAllUserID(dwMachineNumber) then
while frm_ChildLoadData.CZKEM1.GetAllUserInfo(dwMachineNumber,
dwEnrollNumber,
aName,
aPassWord,
aPrivilege,
aEnabled) do
begin
dwEnrollCardNumber := frm_ChildLoadData.CZKEM1.CardNumber[0];
aMsg := '正在下载卡号为'+IntToStr(dwEnrollCardNumber)+'的信息';
Frm_Info.RefreshInfo(aMsg);
case Length(IntToStr(dwEnrollCardNumber)) of
4: CardNo := '000000'+IntToStr(dwEnrollCardNumber);
5: CardNo := '00000'+IntToStr(dwEnrollCardNumber);
6: CardNo := '0000'+IntToStr(dwEnrollCardNumber);
7: CardNo := '000'+IntToStr(dwEnrollCardNumber);
8: CardNo := '00'+IntToStr(dwEnrollCardNumber);
9: CardNo := '0'+IntToStr(dwEnrollCardNumber);
end;
with CDevList.Items.Add do
begin
Caption := '已上传';
Subitems.Add(IntToStr(dwEnrollNumber));
Subitems.Add(trim(aName));
Subitems.Add(CardNo);
imageindex := 0;
end;
end;
Frm_Info.CloseInfo;
application.MessageBox('下载完成!','提示',MB_OK);
end;
end;
end;
function TFrm_Emp.GetMainFormCheckItem:integer;
var i: integer;
begin
Result := -1;
for i:=0 to MainForm.DevList.Items.Count-1 do
begin
if MainForm.DevList.Items.Item[i].Checked then
begin
Result := StrToInt(MainForm.DevList.Items.Item[i].Caption);
end;
end;
end;
procedure TFrm_Emp.FormShow(Sender: TObject);
begin
//刷新列表
RefreshDBUserInfo;
end;
procedure TFrm_Emp.cxButton4Click(Sender: TObject);
var aEmpID,i: integer;
begin
try
//aEmpID := StrToInt(CEmpList.Selected.Caption);
if application.MessageBox('确定要从数据库删除所有选择的员工记录?','提示',MB_ICONQuestion+MB_YESNO)=IDYES then
begin
for i:=CEmpList.Items.Count-1 downto 0 do
begin
if CempList.Items.Item[i].Checked then
begin
aEmpID := StrToInt(CempList.Items.Item[i].Caption);
with dm.temp do
begin
if active then close ;
sql.Text := 'delete from employee where empid='+IntToStr(aEmpID);
ExecSql;
CempList.Items.Delete(i);
frm_info.RefreshInfo('删除卡号为:'+IntToStr(aEmpID)+'的员工信息成功');
end;
end; //end if
end; //end for
frm_info.CloseInfo;
application.MessageBox('删除成功!','提示',MB_OK);
end;//end ifyes
except
application.MessageBox('删除失败!','提示',MB_OK);
end;
end;
procedure TFrm_Emp.cxButton1Click(Sender: TObject);
begin
if Frm_AddEmp=nil then
begin
Frm_AddEmp := TFrm_AddEmp.Create(application);
end;
Frm_AddEmp.EditType := 'Insert';
Frm_AddEmp.ShowModal;
if Frm_AddEmp.ModalResult=Mrok then
begin
//刷新列表
RefreshDBUserInfo;
end;
end;
procedure TFrm_Emp.cxButton2Click(Sender: TObject);
var aEmpID: integer;
aEmpName: string;
aCardNo : string;
i:integer;
ifCheck: boolean;
begin
try
ifCheck := false;
for i:=0 to CEmpList.Items.Count-1 do
begin
if CEmpList.Items.Item[i].Checked then
begin
aEmpID := StrToInt(CEmpList.Items.Item[i].Caption);
aEmpName := CEmpList.Items.Item[i].SubItems[0];
aCardNo := CEmpList.Items.Item[i].SubItems[1];
ifCheck := true;
break;
end;
end;
if not ifCheck then
begin
application.MessageBox('请钩选一个员工!','提示',MB_OK);
exit;
end;
if Frm_AddEmp=nil then
begin
Frm_AddEmp := TFrm_AddEmp.Create(application);
end;
Frm_AddEmp.EditType := 'Edit';
Frm_AddEmp.EmpID := aEmpID;
Frm_AddEmp.EmpName := aEmpName;
Frm_AddEmp.EmpCard := aCardNo;
Frm_AddEmp.ShowModal;
if Frm_AddEmp.ModalResult=Mrok then
begin
//刷新列表
RefreshDBUserInfo;
end;
except
application.MessageBox('请选择员工!','提示',MB_OK);
end;
end;
procedure TFrm_Emp.cxButton8Click(Sender: TObject);
var aEmpID:integer;
aErrorID: integer;
dwMachineNumber: Integer;
dwEnrollNumber: Integer;
aName: WideString;
aPassword: WideString;
aPrivilege: Integer;
aEnabled: WordBool;
dwPassWord: integer;
dwEnrollCardNumber: integer;
CardNo: integer;
i: integer;
aMsg:string;
begin
CurDevID := GetMainFormCheckItem;
if CurDevID<=0 then
begin
application.MessageBox('请选择设备!','提示',MB_OK);
exit;
end;
if dm.GetDeviceInfo(CurDevID,CurDevIP,CurDevPort,CurDevPW,CurSpec) then
begin
if not frm_ChildLoadData.DeviceConnected(2,CurDevID,0,CurDevIP,CurDevPort,CurDevPW,0,aErrorID) then
begin
application.MessageBox('连接设备失败!请检查网络!','提示',MB_OK);
exit;
end
else
begin
for i:=0 to CDevList.Items.Count-1 do
begin
if tryStrToInt(CDevList.Items.Item[i].SubItems[2],CardNo) then
frm_ChildLoadData.CZKEM1.CardNumber[0] := CardNo
else
begin
frm_info.RefreshInfo('上传:'+CDevList.Items.Item[i].SubItems[2]+'失败');
CDevList.Items.Item[i].Caption := '上传失败';
CDevList.Items.Item[i].ImageIndex := 1;
continue;
end;
dwEnrollNumber := StrToInt(CDevList.Items.Item[i].SubItems[0]);
aName := trim(CDevList.Items.Item[i].SubItems[1]);
aPassword:='0';
aPrivilege:=0;
aEnabled := True;
aMsg:='正在上传卡号为:'+CDevList.Items.Item[i].SubItems[2]+'的员工信息';
frm_info.RefreshInfo(aMsg);
if frm_ChildLoadData.CZKEM1.SetUserInfo(dwMachineNumber,dwEnrollNumber,aName,aPassword,aPrivilege,aEnabled) then
begin
frm_info.RefreshInfo('上传:'+CDevList.Items.Item[i].SubItems[2]+'成功');
CDevList.Items.Item[i].Caption := '已上传';
CDevList.Items.Item[i].ImageIndex := 0;
end
else
begin
frm_info.RefreshInfo('上传:'+CDevList.Items.Item[i].SubItems[2]+'失败');
CDevList.Items.Item[i].Caption := '上传失败';
CDevList.Items.Item[i].ImageIndex := 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -