📄 jiedianweihuscr.~pas
字号:
unit JieDianWeiHuScr;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, jpeg, DB, ADODB;
type
TFormjiedian = class(TForm)
Panel1: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
ImageMap: TImage;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtnStartDrag(Sender: TObject;
var DragObject: TDragObject);
procedure ImageMapDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure ImageMapDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtnMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtnKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
OBJ : string;
yjjd:array[1..16] of byte;
public
{ Public declarations }
end;
PMainList = ^MainList;
MainList = record
MainState : Integer;
MainBtn: TBitBtn;
end;
PNoteList = ^NoteList;
NoteList = record
State : Integer;
bjqbh : Integer;
szdz : string;
bjqzt : string;
dyyjjd : string;
bz : string;
tp:string;
Btn: TBitBtn;
end;
var
Formjiedian: TFormjiedian;
MyList: TList;
My11List: TList;
ARecord: PNoteList;
MyMainList:TList;
AMainRecord: PMainList;
implementation
uses AddBJDataSrc,HardwareInterfaceSrc,MainSrc;
{$R *.dfm}
procedure TFormjiedian.BitBtn1Click(Sender: TObject);
var SPath:string;
begin
if MyList.Count<16 then
begin
SPath:=extractFilePath(ParamStr(0));
New(ARecord);
ARecord^.State := 0;
ARecord^.bjqbh := 0;
ARecord^.szdz := '';
ARecord^.bjqzt := '未安装';
ARecord^.dyyjjd := '';
ARecord^.bz := '';
ARecord^.tp := '';
ARecord^.Btn:=TBitBtn.Create(self);
ARecord^.Btn.Parent:= Formjiedian;
ARecord^.Btn.Height := 27;
ARecord^.Btn.Width := 28;
ARecord^.Btn.Left:=5;
ARecord^.Btn.Top:=30;
ARecord^.Btn.Glyph.LoadfromFile(SPath+'\picture\BELL.bmp');
ARecord^.Btn.DragMode:= dmAutomatic;
ARecord^.Btn.OnStartDrag := BitBtnStartDrag;
ARecord^.Btn.OnMouseDown := BitBtnMouseDown;
ARecord^.Btn.OnKeyDown := BitBtnKeyDown;
MyList.Add(ARecord);
New(AMainRecord);
AMainRecord^.MainState:=0;
AMainRecord^.MainBtn:=TBitBtn.Create(FormMain);
AMainRecord^.MainBtn.Parent:= FormMain;
AMainRecord^.MainBtn.Height := 27;
AMainRecord^.MainBtn.Width := 28;
AMainRecord^.MainBtn.Left:=5;
AMainRecord^.MainBtn.Top:=5;
AMainRecord^.MainBtn.Visible:=false;
AMainRecord^.MainBtn.Glyph.LoadfromFile(SPath+'\picture\BELL.bmp');
AMainRecord^.MainBtn.OnClick := FormMain.BitBtn4Click;
MyMainList.Add (AMainRecord);
end
else showmessage('报警器只支持16路');
end;
procedure TFormjiedian.BitBtnKeyDown(Sender: TObject; var Key: Word; //修改
Shift: TShiftState);
var ARec: PNoteList;
i,j:Integer;
Temp:Integer;
Dir:String;
begin
if Key=65 then // 按'A'键 ..............
begin
for i:=0 to MyList.Count-1 do
begin
ARec := MyList.Items[i];
if ARec^.Btn.TabOrder=TBitBtn(Sender).TabOrder then
begin
FormAddBJData.EditNum.Text:=inttostr(ARec^.bjqbh);
FormAddBJData.EditPos.Text:=ARec^.szdz;
FormAddBJData.EditName.Text:=ARec^.bjqzt ;
FormAddBJData.EditAddr.Text:=ARec^.dyyjjd;
FormAddBJData.EditTele.Text:=ARec^.bz;
FormAddBJData.EditMap.Text:=ARec^.tp;
GetDir(0 , Dir);
if FormAddBJData.ShowModal = mrOK then
begin
if (FormAddBJData.EditAddr.Text='') or (FormAddBJData.EditNum.Text='') or (FormAddBJData.EditNum.Text='0') or (FormAddBJData.EditAddr.Text='0') or (strtoint(FormAddBJData.EditAddr.Text)>16) then ShowMessage('编号(不能为空,零)或对应硬件节点(须在1与16之间)有误')
else
begin
ARec^.bjqbh:=strtoint(FormAddBJData.EditNum.Text);
ARec^.szdz:=FormAddBJData.EditPos.Text;
ARec^.bjqzt:=FormAddBJData.EditName.Text ;
ARec^.dyyjjd:=FormAddBJData.EditAddr.Text;
ARec^.bz:=FormAddBJData.EditTele.Text;
ARec^.tp:=FormAddBJData.EditMap.Text;
end;
end;
ChDir(Dir);
break;
end;
end;
end;
end;
procedure TFormjiedian.BitBtnMouseDown(Sender: TObject; Button: TMouseButton; //删除
Shift: TShiftState; X, Y: Integer);
var ARec: PNoteList;
AMainRec: PMainList;
i:Integer;
begin
if Button=mbRight then
begin
if MessageDlg('确定删除吗?',mtConfirmation, [mbYes, mbNo], 0) = mrNo then
begin
//close;
end
else
begin
TBitBtn(Sender).DragMode:= dmManual;
ImageMap.DragMode:= dmManual;
for i:=0 to MyList.Count-1 do
begin
ARec := MyList.Items[i];
AMainRec := MyMainList.Items[i];
if ARec^.Btn.TabOrder=TBitBtn(Sender).TabOrder then
begin
Sender.Free;
MyList.Delete(i);
AMainRec^.MainBtn.Free;
MyMainList.Delete(i);
break;
end;
end;
end;
end;
end;
procedure TFormjiedian.BitBtnStartDrag(Sender: TObject;
var DragObject: TDragObject);
begin
OBJ:='BTN';
end;
procedure TFormjiedian.ImageMapDragDrop(Sender, Source: TObject; X, Y: Integer);
var i:Integer;
ARec: PNoteList;
AMainRec: PMainList;
begin
for i:=0 to MyList.Count-1 do
begin
ARec := MyList.Items[i];
AMainRec := MyMainList.Items[i];
if Source=ARec^.Btn then
begin
ARec^.Btn.Left:=x;
ARec^.Btn.Top:=y;
AMainRec^.MainBtn.Left:=x;
AMainRec^.MainBtn.Top:=y-35;
break;
end;
end;
end;
procedure TFormjiedian.ImageMapDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept:= true;
end;
procedure TFormjiedian.BitBtn2Click(Sender: TObject); //按‘确定’ 键
var i,j:Integer;
ARec: PNoteList;
AMainRec: PMainList;
strSQL : string;
begin
ADOQuery1.Close;
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
ADOQuery1.Delete;
end;
j:= MyList.Count-1;
for i:=0 to j do
begin
ARec := MyList.Items[i];
AMainRec := MyMainList.Items[i];
if ARec^.bjqbh=0 then
begin
end
else
begin
strSQL := 'Insert into bjqwhb(报警器编号,所在地址, 报警器状态, 对应硬件节点, 备注, 左边,上边,对应图片) values(' +
inttostr(ARec^.bjqbh) + ',' + '"' + ARec^.szdz + '"' + ',' + '"' + ARec^.bjqzt + '"' + ',' +
'"' + ARec^.dyyjjd + '"' + ','+ '"' + ARec^.bz + '"' + ','+ inttostr(ARec^.Btn.Left) + ',' + inttostr(ARec^.Btn.Top) + ','+'"'+ARec^.tp+'"'+')';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := strSQL;
ADOQuery1.ExecSQL;
end;
end;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'select * from bjqwhb';
ADOQuery1.ExecSQL;
close;
end;
procedure TFormjiedian.FormCreate(Sender: TObject);
var SPath:string;
i,Len,temp : Integer;
begin
MyList := TList.Create; //申请缓冲区
MyMainList := TList.Create; //申请缓冲区
My11List := TList.Create;
ADOQuery1.Open;
if ADOQuery1.Eof=false then
begin
SPath:=extractFilePath(ParamStr(0));
Len:= ADOQuery1.RecordCount;
ADOQuery1.First;
for i:=0 to Len-1 do
begin
New(ARecord);
ARecord^.State := 0;
ARecord^.bjqbh := ADOQuery1.FieldByName('报警器编号').AsInteger;
ARecord^.szdz := ADOQuery1.FieldByName('所在地址').AsString;
ARecord^.bjqzt := ADOQuery1.FieldByName('报警器状态').AsString;
ARecord^.dyyjjd := ADOQuery1.FieldByName('对应硬件节点').AsString;
ARecord^.bz := ADOQuery1.FieldByName('备注').AsString;
ARecord^.tp := ADOQuery1.FieldByName('对应图片').AsString;
ARecord^.Btn:=TBitBtn.Create(self);
ARecord^.Btn.Parent:= Formjiedian;
ARecord^.Btn.Height := 27;
ARecord^.Btn.Width := 28;
ARecord^.Btn.Left:=ADOQuery1.FieldByName('左边').AsInteger;
ARecord^.Btn.Top:=ADOQuery1.FieldByName('上边').AsInteger;
ARecord^.Btn.Glyph.LoadfromFile(SPath+'\picture\BELL.bmp');
ARecord^.Btn.DragMode:= dmAutomatic;
ARecord^.Btn.OnStartDrag := BitBtnStartDrag;
ARecord^.Btn.OnMouseDown := BitBtnMouseDown;
ARecord^.Btn.OnKeyDown := BitBtnKeyDown;
MyList.Add(ARecord);
New(AMainRecord);
AMainRecord^.MainState:=0;
AMainRecord^.MainBtn:=TBitBtn.Create(self);
AMainRecord^.MainBtn.Parent:= FormMain;
AMainRecord^.MainBtn.Height := 27;
AMainRecord^.MainBtn.Width := 28;
AMainRecord^.MainBtn.Left:=ARecord^.Btn.Left;
AMainRecord^.MainBtn.Top:=ARecord^.Btn.Top-35;
AMainRecord^.MainBtn.Visible:=false;
AMainRecord^.MainBtn.Glyph.LoadfromFile(SPath+'\picture\BELL.bmp');
AMainRecord^.MainBtn.OnClick := FormMain.BitBtn4Click;
MyMainList.Add (AMainRecord);
ADOQuery1.Next;
end;
end;
end;
procedure TFormjiedian.FormDestroy(Sender: TObject);
var i:Integer;
begin
for i:=MyList.Count-1 Downto 0 do
begin
ARecord := MyList.Items[i];
ARecord^.Btn.Free;
Dispose(ARecord);
AMainRecord := MyMainList.Items[i];
AMainRecord^.MainBtn.Free;
Dispose(AMainRecord);
end
end;
procedure TFormjiedian.FormActivate(Sender: TObject); //激活
begin
FormHardwareInterface.ListenComm.StopComm;
FormMain.Timer2.Enabled:=false;
end;
procedure TFormjiedian.FormClose(Sender: TObject; var Action: TCloseAction); //关闭
var i:Integer;
ARec: PNoteList;
AMainRec: PMainList;
begin
for i:=MyList.Count-1 downto 0 do
begin
ARec := MyList.Items[i];
AMainRec := MyMainList.Items[i];
if ARec^.bjqbh=0 then
begin
ARec^.Btn.Free;
MyList.Delete(i);
AMainRec^.MainBtn.Free;
MyMainList.Delete(i);
end;
end;
FormHardwareInterface.ListenComm.StartComm;
FormMain.Timer2.Enabled:=true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -