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 + -
显示快捷键?