⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u_adddevice.pas

📁 中控800型号考勤机的自动采集数据程序。能够手动采集
💻 PAS
字号:
unit u_AddDevice;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, cxControls, cxContainer, cxEdit,
  cxTextEdit, cxMaskEdit, cxDBEdit, Menus, cxLookAndFeelPainters, cxButtons;

type
  TFrm_AddDevice = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    QryDevice: TADOQuery;
    dsDevice: TDataSource;
    QryDeviceDeviceID: TIntegerField;
    QryDeviceDevName: TStringField;
    QryDeviceSysPwd: TStringField;
    QryDeviceIP: TStringField;
    QryDevicePort: TIntegerField;
    cxDBMaskEdit1: TcxDBMaskEdit;
    cxDBMaskEdit2: TcxDBMaskEdit;
    cxDBMaskEdit3: TcxDBMaskEdit;
    cxDBMaskEdit4: TcxDBMaskEdit;
    cxDBMaskEdit5: TcxDBMaskEdit;
    Button1: TcxButton;
    Button2: TcxButton;
    Button3: TcxButton;
    Button4: TcxButton;
    Button5: TcxButton;
    cxButton1: TcxButton;
    procedure FormShow(Sender: TObject);
    procedure dsDeviceStateChange(Sender: TObject);
    procedure cxDBMaskEdit1KeyPress(Sender: TObject; var Key: Char);
    procedure cxDBMaskEdit3KeyPress(Sender: TObject; var Key: Char);
    procedure QryDeviceBeforePost(DataSet: TDataSet);
    procedure SetFouce(Sender: TObject);
    procedure cxDBMaskEdit2KeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure cxButton1Click(Sender: TObject);
  private
    CurDevID: integer;
    CurDevIP: string;
    CurDevPort: integer;
    CurDevPW: integer;
    CurSpec: string;
    { Private declarations }
    function IfExists(aDevid: integer):boolean;
    function GetMainFormCheckItem:integer;
  public
    { Public declarations }
    procedure GetDeviceInfo(aDevid: integer);
  end;

var
  Frm_AddDevice: TFrm_AddDevice;

implementation
uses u_DM, u_MainForm, u_ChildLoadData;
{$R *.dfm}
function TFrm_AddDevice.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_AddDevice.SetFouce(Sender: TObject);
begin
 case (Sender as TCxDBMaskEdit).TabOrder of
  0:cxDBMaskEdit2.SetFocus;
  1:cxDBMaskEdit3.SetFocus;
  2:cxDBMaskEdit4.SetFocus;
  3:cxDBMaskEdit5.SetFocus;
  4:begin if QryDevice.State in [dsInsert,dsEdit] then
   Button4.OnClick(sender); 
  end;
 end;
end;
procedure TFrm_AddDevice.GetDeviceInfo(aDevid: integer);
begin
 if QryDevice.Active then
 begin
  QryDevice.Locate('DeviceID',aDevid,[]);
 end;
end;
function TFrm_AddDevice.IfExists(aDevid: integer):boolean;
begin
 with dm.temp do
 begin
  if Active then close;
  Sql.Text := 'select count(*) from Device where DeviceID='+IntToStr(aDevID);
  Open;
  Result := (Fields[0].AsInteger>0);
  close;
 end;
end;
procedure TFrm_AddDevice.FormShow(Sender: TObject);
begin
 try
  QryDevice.Open;
  except
   application.MessageBox('打开设备资料出错!','提示',MB_OK);
  end;
end;

procedure TFrm_AddDevice.dsDeviceStateChange(Sender: TObject);
begin
 Button1.Enabled := not (dsDevice.DataSet.State in [dsInsert,dsEdit]);
 Button2.Enabled := not (dsDevice.DataSet.State in [dsInsert,dsEdit]);
 Button3.Enabled := not (dsDevice.DataSet.State in [dsInsert,dsEdit]);
 Button4.Enabled := dsDevice.DataSet.State in [dsInsert,dsEdit];
 Button5.Enabled := dsDevice.DataSet.State in [dsInsert,dsEdit];
 cxDBMaskEdit1.Enabled := dsDevice.DataSet.State in [dsInsert,dsEdit];
 cxDBMaskEdit2.Enabled := dsDevice.DataSet.State in [dsInsert,dsEdit];
 cxDBMaskEdit3.Enabled := dsDevice.DataSet.State in [dsInsert,dsEdit];
 cxDBMaskEdit4.Enabled := dsDevice.DataSet.State in [dsInsert,dsEdit];
 cxDBMaskEdit5.Enabled := dsDevice.DataSet.State in [dsInsert,dsEdit];

end;

procedure TFrm_AddDevice.cxDBMaskEdit1KeyPress(Sender: TObject;
  var Key: Char);
begin
if not (key in ['1','2','3','4','5','6','7','8','9','0',#8,#46,#13]) then
 key := #0;
if key=#13 then
SetFouce(Sender);
end;

procedure TFrm_AddDevice.cxDBMaskEdit3KeyPress(Sender: TObject;
  var Key: Char);
begin
if not (key in ['1','2','3','4','5','6','7','8','9','0','.',#8,#46,#13]) then
 key := #0;
if key=#13 then
SetFouce(Sender);
end;

procedure TFrm_AddDevice.QryDeviceBeforePost(DataSet: TDataSet);
begin
if DataSet.FieldByName('DeviceID').Value=null then
 begin
  application.MessageBox('设备ID不能为空!','提示',MB_OK);
  cxDBMaskEdit1.SetFocus;
  abort;
 end;
if DataSet.State=dsInsert then
if IfExists(DataSet.FieldByName('DeviceID').AsInteger) then
 begin
  application.MessageBox('设备ID重复!','提示',MB_OK);
  cxDBMaskEdit1.SetFocus;
  abort;
 end;
if (DataSet.FieldByName('DevName').Value=null) or (trim(DataSet.FieldByName('DevName').AsString)='') then
 begin
  application.MessageBox('设备名称不能为空!','提示',MB_OK);
  cxDBMaskEdit2.SetFocus;
  abort;
 end;
if (DataSet.FieldByName('IP').Value=null) or (trim(DataSet.FieldByName('IP').AsString)='')  then
 begin
  application.MessageBox('IP地址不能为空!','提示',MB_OK);
  cxDBMaskEdit3.SetFocus;
  abort;
 end;
if DataSet.FieldByName('Port').Value=null then
 begin
  application.MessageBox('端口号不能为空!','提示',MB_OK);
  cxDBMaskEdit4.SetFocus;
  abort;
 end;
if DataSet.FieldByName('SysPwd').Value=null then
 begin
  application.MessageBox('密码不能为空!','提示',MB_OK);
  cxDBMaskEdit5.SetFocus;
  abort;
 end;
end;

procedure TFrm_AddDevice.cxDBMaskEdit2KeyPress(Sender: TObject;
  var Key: Char);
begin
if key=#13 then
SetFouce(Sender);
end;

procedure TFrm_AddDevice.Button1Click(Sender: TObject);
begin
 if dsDevice.DataSet.State in [dsInsert,dsEdit] then
  begin
  if application.MessageBox('已修改的资料未保存是否保存','提示',MB_ICONQUESTION+MB_YESNO)=IDYES then
   dsDevice.DataSet.Post;
  end;
 QryDevice.insert;
 cxDbMaskedit1.SetFocus;
end;

procedure TFrm_AddDevice.Button2Click(Sender: TObject);
begin
 if dsDevice.DataSet.State in [dsInsert,dsEdit] then
  begin
  if application.MessageBox('已修改的资料未保存是否保存','提示',MB_ICONQUESTION+MB_YESNO)=IDYES then
   dsDevice.DataSet.Post;
  end;
 QryDevice.Edit;
end;

procedure TFrm_AddDevice.Button3Click(Sender: TObject);
begin
  if application.MessageBox('确定要删除设备资料吗?','提示',MB_ICONQUESTION+MB_YESNO)=IDYES then
    QryDevice.Delete;
end;

procedure TFrm_AddDevice.Button4Click(Sender: TObject);
begin
 QryDevice.Cancel;
end;

procedure TFrm_AddDevice.Button5Click(Sender: TObject);
begin
 if dsDevice.DataSet.State in [dsInsert,dsEdit] then
  begin
  //if application.MessageBox('已修改的资料未保存是否保存','提示',MB_ICONQUESTION+MB_YESNO)=IDYES then
   dsDevice.DataSet.Post;
  end;
  MainForm.GetDevList;

end;

procedure TFrm_AddDevice.cxButton1Click(Sender: TObject);
var ErrorCode: integer;
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,ErrorCode) then
   begin
    application.MessageBox('连接设备失败!请检查网络!','提示',MB_OK);
    exit;
   end
  else
  begin
   if frm_ChildLoadData.CZKEM1.SetDeviceTime(CurDevID) then
   begin
    application.MessageBox('同步时间成功!','提示',MB_OK);
    frm_ChildLoadData.CZKEM1.Disconnect;
   end;
  end;
 end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -