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

📄 main.pas

📁 企业安防管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  Progressbar1.Position  := Trunc(Random(300));
  Progressbar2.Position  := Trunc(Random(300));       
  Progressbar3.Position  := Trunc(Random(300));
  SendMessage(Progressbar1.Handle,PBM_SETBARCOLOR,0,clLime);
  SendMessage(Progressbar2.Handle,PBM_SETBARCOLOR,0,clRed);
  SendMessage(Progressbar3.Handle,PBM_SETBARCOLOR,0,clYellow);
  inc(Num);
  if State = 0 then
  begin
    Shape2.Brush.Color := clRed;
    Shape3.Brush.Color := clYellow;
    if Shape1.Brush.Color = clLime then
      Shape1.Brush.Color := clWhite
    else
      Shape1.Brush.Color := clLime;
  end
  else if State = 1 then
  begin
    Shape1.Brush.Color := clLime;
    Shape3.Brush.Color := clYellow;
    if Shape2.Brush.Color = clRed then
      Shape2.Brush.Color := clWhite
    else
      Shape2.Brush.Color := clRed;
  end
  else
  begin
    Shape1.Brush.Color := clLime;
    Shape2.Brush.Color := clRed;
    if Shape3.Brush.Color = clYellow then
      Shape3.Brush.Color := clWhite
    else
      Shape3.Brush.Color := clYellow;
  end;
end;

procedure TForm1.N32Click(Sender: TObject);
begin
  Application.CreateForm(TForm25,Form25);
  Form25.ShowModal;
  Form25.Free;
end;

procedure TForm1.N25Click(Sender: TObject);
begin
  Application.CreateForm(TForm21,Form21);
  Form21.ShowModal;
  Form21.Free;  
end;

procedure TForm1.N33Click(Sender: TObject);
begin
  Application.CreateForm(TForm22,Form22);
  Form22.ShowModal;
  Form22.Free;
end;

procedure TForm1.MSComm1Comm(Sender: TObject);
var
  receiveData: String;//记录接收的数据
  lcxx: String;//截取楼层信息
  xmxx: String;//截取项目数据
  bjfw: String;//记录报警范围
  lccx: String;//记录查询到的楼层名称及楼层数据
  bjxm: String;//记录哪个报警设备发生报警
  bjcl: String;//记录报警处理
  comparebjcl: String;//记录xmmc数组中所有的数据,将它与bjcl比较(字符数是否相同)
  i,m: Integer;
  bjCount: Integer;//记录日志缓冲表中一个时间段(30秒)的记录数
  tempID: Integer;//记录临时ID
  cl:Boolean;//判断30秒内接受的报警在报警处理表中是否存在相应的处理,Fale表示没有相应的处理
begin
  cl:= False;
  with Data.ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from 日志缓冲表');
    Open;
  end;
  if Data.ADOQuery1.RecordCount<1 then
    ID := 0; //初始化ID,当日志缓冲表中没有记录,即所有的报警都及时的处理了,将ID置为0
  Case MSComm1.CommEvent of
    comEvReceive:
    begin
      ReceiveData := MSComm1.Input;
      if Trim(ReceiveData)<>'' then
      begin
        Try
          lcxx := Copy(Trim(receiveData),0,7);
          xmxx := Copy(Trim(receiveData),8,4);
          with Data.ADOQuery1 do
          begin
            Close;
            SQL.Clear;
            SQL.Add('select * from 楼层信息表 where 楼层编号 = :a');
            Parameters.ParamByName('a').Value := Trim(lcxx);
            Open;
            lccx := FieldByName('楼层名称').Value+ ''+ IntToStr(FieldByName('楼层').Value) + '层';
          end;
          with Data.ADOQuery1 do
          begin
            Close;
            SQL.Clear;
            SQL.Add('select * from 报警项目表 where 项目数据 = :a');
            Parameters.ParamByName('a').Value := Trim(xmxx);
            Open;
            bjxm := FieldByName('项目名称').Value;
          end;
          State := 1;
          Memo1.Lines.Add(lccx+ '发生'+bjxm + FormatDateTime('hh:mm:ss',Now));
          xmmc[index]:= bjxm;
          inc(index);
          Label5.Caption := Memo1.Lines[0];
          if Memo1.Lines.Count<2 then
          begin
            Num := 0;
            while Num<5 do
            Application.ProcessMessages;
          end;
          with Data.ADOQuery1 do
          begin
            Close;
            SQL.Clear;
            SQL.Add('insert 日志缓冲表 values(:a,:b,:c,default,default,:d)');
            Parameters.ParamByName('a').Value := Trim(lcxx);
            Parameters.ParamByName('b').Value := Trim(bjxm);
            Parameters.ParamByName('c').Value := Trim(receiveData);
            Parameters.ParamByName('d').Value := Id;
            ExecSQL;
          end;
          if Num<5 then
            Exit; //在接受到第一个报警时,30秒内不执行相应的处理
          inc(Id);
          with Data.ADOQuery1 do
          begin
            Close;
            SQL.Clear;
            SQL.Add('select * from 报警处理表 where ');
            For i := 0 to index -1 do
            begin
              if i<> index-1 then
                SQL.Add(' 项目范围 like :' + 'a'+IntToStr(i)+' and ')
              else
                SQL.Add(' 项目范围 like :' + 'a'+IntToStr(i));
            end;
            For i := 0 to index -1 do
              Parameters.ParamByName('a'+IntToStr(i)).Value := '%'+xmmc[i]+'%';
            Open;
            if Index>1 then  //将xmmc数组中的数据赋给变量Comparebjcl,去除数组中相同的元素
            begin
              For i := 0 to Index-1 do
                if i<>index-1 then
                begin
                  For m:=i+1 to index-1 do
                  if Trim(xmmc[i])<>Trim(xmmc[m]) then
                    Comparebjcl := Trim(Comparebjcl)+Trim(xmmc[i]);
                end
                else
                  Comparebjcl := Trim(Comparebjcl)+Trim(xmmc[i]);
            end
            else
              Comparebjcl := Trim(Comparebjcl)+Trim(xmmc[0]);
            if Data.ADOQuery1.RecordCount>0 then
            while Not Data.ADOQuery1.Eof do
            begin
              bjfw := Data.ADOQuery1.FieldByName('项目范围').Value;
              if Length(Trim(bjfw))= Length(Trim(Comparebjcl)) then
              begin
                if (FieldByName('音乐').Value<>Null)and(FieldByName('音乐').Value<>'')  then
                begin
                  Music.FileName:= FieldByName('音乐').Value;
                  Music.Play;
                end;
                bjcl := Data.ADOQuery1.FieldByName('报警处理').Value;
                cl:= True;
                Break;
              end;
              Data.ADOQuery1.Next;
            end;
          end;
          Application.CreateForm(TForm24,Form24);
          Form24.Memo1.Text := Memo1.Text;
          Memo1.Clear;
          With Data.ADOQuery1 do
          begin
            Close;
            SQL.Clear;
            SQL.Add('select Min(标识) from 日志缓冲表');
            Open;
            tempID := Fields[0].Value;
          end;
          with Data.ADOQuery1 do
          begin
            Close;
            SQL.Clear;
            SQL.Add('select * from 日志缓冲表 where 标识 = :a');
            Parameters.ParamByName('a').Value := tempID;
            Open;
          end;
          i:= 0;
          bjCount:= Data.ADOQuery1.RecordCount;
          while Not Data.ADOQuery1.Eof do
          begin
            LogArray[i].lcbh:= Data.ADOQuery1.FieldByName('楼层编号').Value;
            LogArray[i].xmmc:= Data.ADOQuery1.FieldByName('项目数据').Value;
            LogArray[i].sbsj:= Data.ADOQuery1.FieldByName('设备数据').Value;
            Data.ADOQuery1.Next;
            inc(i);
          end;
          Try  //在日志记录表中插入数据,同时在日志缓冲表中删除相应的数据
            Data.ADOConnection1.BeginTrans;
            Form24.ShowModal;
            if Form24.ModalResult = mrAll then
            begin
              if cl= True then
              begin
                if Trim(bjcl) = '拨打120' then
                  Call('120')
                else if Trim(bjcl) = '拨打119' then
                  Call('119');
              end;
              For i:=0 to bjCount-1 do
                with Data.ADOQuery1 do
                begin
                  Close;
                  SQL.Clear;
                  SQL.Add('insert 日志记录表 Values(:a,:b,:c,Default,Default)');
                  Parameters.ParamByName('a').Value := LogArray[i].lcbh;
                  Parameters.ParamByName('b').Value := LogArray[i].xmmc;
                  Parameters.ParamByName('c').Value := LogArray[i].sbsj;
                  ExecSQL;
                end;
            end
            else
            begin
              For i:=0 to bjCount-1 do
                with Data.ADOQuery1 do
                begin
                  Close;
                  SQL.Clear;
                  SQL.Add('insert 日志记录表 Values(:a,:b,:c,1,Default)');
                  Parameters.ParamByName('a').Value := LogArray[i].lcbh;
                  Parameters.ParamByName('b').Value := LogArray[i].xmmc;
                  Parameters.ParamByName('c').Value := LogArray[i].sbsj;
                  ExecSQL;
                end;
            end;
            with Data.ADOQuery1 do
            begin
              Close;
              SQL.Clear;
              SQL.Add('delete 日志缓冲表 where 标识 = :a');
              Parameters.ParamByName('a').Value := tempID;
              ExecSQL;
            end;
            Data.ADOConnection1.CommitTrans;
          Except
            Data.ADOConnection1.RollbackTrans;
          end;
          State := 0;
        Except
          Application.MessageBox('系统出错.','提示',64);
          OnCreate(Sender);
        End;
      end;
    end;
    ComEventBreak:
    State := 2;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MSComm1.Output := Edit1.Text;
end;

procedure TForm1.Call(Number: String);
begin
  State := 0;
  MakeCall('', Pchar(ExtractFileName(Application.ExeName)),'拨号',Pchar(Number));
  Application.Run;
end;

procedure TForm1.N23Click(Sender: TObject);
begin
  Application.CreateForm(TForm23,Form23);
  Form23.ShowModal;
  Form23.Free;
end;

procedure TForm1.ShowMenu;
begin
  N2.Visible:= True;
  N3.Visible:= True;
  N4.Visible:= True;
  N5.Visible:= True;
  N9.Visible:= True;
  N11.Visible:= True;
  N15.Visible:= True;
  N16.Visible:= True;
  N24.Visible:= True;
  N28.Visible:= True;
  N33.Visible:= True;
  N30.Visible:= True;
  N29.Visible:= True;
end;

procedure TForm1.GNovisible;
begin
  N2.Visible := False;
  N3.Visible := False;
  N4.Visible := False;
  N29.Visible := False;
  N30.Visible := False;  
end;

procedure TForm1.Deleteloghc;
begin
  With Data.ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('delete 日志缓冲表');
    ExecSQL;
  end;   
end;

procedure TForm1.N35Click(Sender: TObject);
begin
  frm_option.showmodal;
end;

procedure TForm1.N36Click(Sender: TObject);
begin
  frm_prew_hf:=Tfrm_prew_hf.create(application);
  frm_prew_hf.showmodal;
end;

procedure TForm1.N37Click(Sender: TObject);
begin
 frm_prew_main.showmodal;
end;

procedure TForm1.N39Click(Sender: TObject);
begin
  frm_set_bfyy:=Tfrm_set_bfyy.create(application);
  frm_set_bfyy.showmodal;
end;

procedure TForm1.N38Click(Sender: TObject);
begin
 frm_path:=Tfrm_path.create(application);
  frm_path.showmodal;
end;

end.

⌨️ 快捷键说明

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