jiangkong_unit.pas

来自「实现了断路器群控系统」· PAS 代码 · 共 363 行

PAS
363
字号
unit Jiangkong_Unit;

interface

uses
  IniFiles,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DB, ADODB, Mask, DBCtrls, Grids, DBGrids;

type
  TJiangkong = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    ADODataSet1: TADODataSet;
    DataSource1: TDataSource;
    Timer1: TTimer;
    Button1: TButton;
    StaticText1: TStaticText;
    ADOTable1: TADOTable;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Bevel2: TBevel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Bevel3: TBevel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    ADOQuery1: TADOQuery;
    Bevel1: TBevel;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    DBGrid1: TDBGrid;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Jiangkong: TJiangkong;
  g_connection : TAdoConnection = nil; //与数据库的连接对象,供系统中其他数据控件与数据库连接使用
  Bresult: boolean =True;
  shijian:string;
  itimer:integer;


implementation

{$R *.dfm}


Procedure TimeDelay(DT:DWORD);       //复制于通讯
var
  TT:DWORD;
begin
  TT:=GetTickCount();
  while GetTickCount()-TT<DT do
    Application.ProcessMessages;
end;



procedure TJiangkong.FormCreate(Sender: TObject);
var
  strpath:string;     //配置文件路径
  strsyspara:Tinifile;  //系统特殊数据存放文件
//  shijian : string;   //时间

begin
  timer1.Enabled := True;//   mf
  itimer:=-1;//
  strpath := ExtractFilePath(Application.ExeName);
  strsyspara := Tinifile.Create(strpath+'shenchang_CONFIG.INI');
  if NOT FileExists(strpath+'shenchang_CONFIG.INI')  then
     begin
            showmessage('警告:系统配置文件不存在!');
            Bresult:=False;
            Exit;
     end;
  g_connection:=TADOConnection.Create(nil);
  g_connection.ConnectionString:=strsyspara.ReadString('system','connectionstring','');
  g_connection.LoginPrompt := False;
  g_connection.Open;

  //self.ADOCommand1.Connection := g_Connection;
  self.ADOQuery1.Connection:=g_Connection;       //
  self.ADODataSet1.Connection := g_Connection;

  self.ADODataSet1.Active := False;
  self.ADODataSet1.CommandText := 'select * from 命令';
  self.ADODataSet1.Active := true;

end;

procedure TJiangkong.Timer1Timer(Sender: TObject);
var
  str:string;
  strSql:string;
  strcs:string;
  num:integer;
begin
  itimer:=(itimer+1)mod 3;
  if itimer=0 then str:='断路器1';
  if itimer=1 then str:='断路器2';
  if itimer=2 then str:='断路器3';
  //断路器1开始----------------------
  
  strcs:='电流';
  with adoQuery1 do
  begin
  close;
  SQL.Clear;
  strSql:='select * from Canshu ';
  strSql:=strSql +' WHERE shebeiming='+ '''' + str + '''';
  strSql:=strSql + 'and canshuming='+''''+strcs+'''';
  sql.Add(strSql);
  Open;
  end;
  {不能为空}
  if adoQuery1.RecordCount>2 then
  begin
    adoQuery1.Recordset.MoveLast;
    itimer:=(itimer)mod 3;
    if itimer=0 then label8.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;;
    if itimer=1 then label16.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;;
    if itimer=2 then label24.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;;
  end;

    strcs:='电压';
  with adoQuery1 do
  begin
  close;
  SQL.Clear;
  strSql:='select * from Canshu ';
  strSql:=strSql +' WHERE shebeiming='+ '''' + str + '''';
  strSql:=strSql + 'and canshuming='+''''+strcs+'''';
  sql.Add(strSql);
  Open;
  end;
  {不能为空}
  if adoQuery1.RecordCount>2 then
  begin
    adoQuery1.Recordset.MoveLast;
    itimer:=(itimer)mod 3;
    if itimer=0 then label9.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;;
    if itimer=1 then label17.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;;
    if itimer=2 then label25.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;;
  end;

    strcs:='温度';
  with adoQuery1 do
  begin
  close;
  SQL.Clear;
  strSql:='select * from Canshu ';
  strSql:=strSql +' WHERE shebeiming='+ '''' + str + '''';
  strSql:=strSql + 'and canshuming='+''''+strcs+'''';
  sql.Add(strSql);
  Open;
  end;
  {不能为空}
  if adoQuery1.RecordCount>2 then
  begin
    adoQuery1.Recordset.MoveLast;
    itimer:=(itimer)mod 3;
    if itimer=0 then label10.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;;
    if itimer=1 then label18.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;;
    if itimer=2 then label26.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;;
  end;

      strcs:='开关状态';
  with adoQuery1 do
  begin
  close;
  SQL.Clear;
  strSql:='select * from Canshu ';
  strSql:=strSql +' WHERE shebeiming='+ '''' + str + '''';
  strSql:=strSql + 'and canshuming='+''''+strcs+'''';
  sql.Add(strSql);
  Open;
  end;
  {不能为空}
  if adoQuery1.RecordCount>2 then
  begin
    adoQuery1.Recordset.MoveLast;
    itimer:=(itimer)mod 3;
    if itimer=0 then label11.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;;
    if itimer=1 then label19.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;;
    if itimer=2 then label27.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;;
  end;

  num:=itimer;
       StaticText1.Caption:='读断路器'+inttostr(itimer+1)+'.';

     //previous 1
  {with adoQuery1 do
  begin
  close;
  SQL.Clear;
  strSql:='select * from Canshu ';
  strSql:=strSql +' WHERE shebeiming='+ '''' + str + '''';
  sql.Add(strSql);
  Open;
  end;
  //不能为空
  if adoQuery1.RecordCount>4 then
  begin
    adoQuery1.Recordset.MoveLast;
    label27.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;
    adoQuery1.Recordset.MovePrevious;
    label26.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;
    adoQuery1.Recordset.MovePrevious;
    label25.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;
    adoQuery1.Recordset.MovePrevious;
    label24.Caption:=adoQuery1.Recordset.Fields['canshuzhi'].Value;
  end; }
     //previous 2
    { strcs:='开关状态';
     //strSql:='SELECT *';
     strSql:='SELECT canshuming as 参数名,canshuzhi as 数值,riqi as 日期,shijian as 时间, shebeiming as 断路器名 ';
     strSql:=strSql + 'FROM dbo.Canshu';
     strSql:=strSql +' WHERE shebeiming=';
     strSql:=strSql + '''' + str + '''';
     strSql:=strSql + 'and canshuming='+''''+strcs+'''';
     strSql:=strSql + 'and shijian in (select max(shijian) from dbo.Canshu where shebeiming=';
     strSql:=strSql + '''' + str + ''''+'and canshuming='+''''+strcs+''''+')';
     strSql:=strSql + 'and riqi in (select max(riqi) from dbo.Canshu where shebeiming=';
     strSql:=strSql + '''' + str + ''''+'and canshuming='+''''+strcs+''''+')';
     adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.SQL.Add(strSql);
     adoquery1.Open;
     label27.Caption:=ADOQuery1.FieldByName('数值').AsString;   }
  //短路器3结束----------------------

     if label11.Caption ='断开      ' then label1.Color:=clred else label1.Color:=clGradientActiveCaption;
     if label19.Caption ='断开      ' then label2.Color:=clred else label2.Color:=clGradientActiveCaption;
     if label27.Caption ='断开      ' then label3.Color:=clred else label3.Color:=clGradientActiveCaption;

     {self.ADODataSet1.Active:=False;
     self.ADODataSet1.CommandText:=strSql;
     self.ADODataSet1.Active:=True;
     adotable1.Clone(adodataset1,ltUnspecified);  }

end;

procedure TJiangkong.Button1Click(Sender: TObject);
begin
  timer1.Enabled := False;
  self.Close;
end;

procedure TJiangkong.Button2Click(Sender: TObject);
begin
  self.ADODataSet1.Active := False;
  self.ADODataSet1.CommandText := 'select * from 命令';
  self.ADODataSet1.Active := true;
  shijian := DateToStr(Date()) + ' ' + TimeToStr(Time());
  self.ADODataSet1.edit;
  self.ADODataSet1.FieldValues['时间'] := shijian;
  self.ADODataSet1.FieldValues['设备名'] := '1';
  self.ADODataSet1.FieldValues['动作'] := '闭合';
  self.ADODataSet1.Post;
end;

procedure TJiangkong.Button3Click(Sender: TObject);
begin
  self.ADODataSet1.Active := False;
  self.ADODataSet1.CommandText := 'select * from 命令';
  self.ADODataSet1.Active := true;
  shijian := DateToStr(Date()) + ' ' + TimeToStr(Time());
  self.ADODataSet1.Edit;
  self.ADODataSet1.FieldValues['时间'] := shijian;
  self.ADODataSet1.FieldValues['设备名'] := '1';
  self.ADODataSet1.FieldValues['动作'] := '断开';
  self.ADODataSet1.Post;
end;

procedure TJiangkong.Button4Click(Sender: TObject);
begin
  self.ADODataSet1.Active := False;
  self.ADODataSet1.CommandText := 'select * from 命令 where 设备名=2';
  self.ADODataSet1.Active := true;
  shijian := DateToStr(Date()) + ' ' + TimeToStr(Time());
  self.ADODataSet1.edit;
  self.ADODataSet1.FieldValues['时间'] := shijian;
  self.ADODataSet1.FieldValues['设备名'] := '2';
  self.ADODataSet1.FieldValues['动作'] := '闭合';
  self.ADODataSet1.Post;
end;

procedure TJiangkong.Button5Click(Sender: TObject);
begin
  self.ADODataSet1.Active := False;
  self.ADODataSet1.CommandText := 'select * from 命令 where 设备名=2';
  self.ADODataSet1.Active := true;
  shijian := DateToStr(Date()) + ' ' + TimeToStr(Time());
  self.ADODataSet1.edit;
  self.ADODataSet1.FieldValues['时间'] := shijian;
  self.ADODataSet1.FieldValues['设备名'] := '2';
  self.ADODataSet1.FieldValues['动作'] := '断开';
  self.ADODataSet1.Post;
end;

procedure TJiangkong.Button7Click(Sender: TObject);
begin
  self.ADODataSet1.Active := False;
  self.ADODataSet1.CommandText := 'select * from 命令 where 设备名=3';
  self.ADODataSet1.Active := true;
  shijian := DateToStr(Date()) + ' ' + TimeToStr(Time());
  self.ADODataSet1.edit;
  self.ADODataSet1.FieldValues['时间'] := shijian;
  self.ADODataSet1.FieldValues['设备名'] := '3';
  self.ADODataSet1.FieldValues['动作'] := '断开';
  self.ADODataSet1.Post;
end;

procedure TJiangkong.Button6Click(Sender: TObject);
begin
  self.ADODataSet1.Active := False;
  self.ADODataSet1.CommandText := 'select * from 命令 where 设备名=3';
  self.ADODataSet1.Active := true;
  shijian := DateToStr(Date()) + ' ' + TimeToStr(Time());
  self.ADODataSet1.Edit;
  self.ADODataSet1.FieldValues['时间'] := shijian;
  self.ADODataSet1.FieldValues['设备名'] := '3';
  self.ADODataSet1.FieldValues['动作'] := '闭合';
  self.ADODataSet1.Post;
end;

end.

⌨️ 快捷键说明

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