📄 u_adddevice.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 + -