📄 main.pas
字号:
cnnUnlockCap.Parent:=MainFrm;
cnnUnlockCap.Font.Charset:=GB2312_CHARSET;
cnnUnlockCap.Font.Name:='宋体';
cnnUnlockCap.Font.Size:=12;
cnnUnlockCap.Font.Color:=clNavy;
cnnUnlockCap.AutoSize:=True;
cnnUnlockCap.Transparent:=True;
cnnUnlockCap.Left:=256;
cnnUnlockCap.Top:=634;
cnnUnlockCap.Caption:='高压/延弧开锁:';
end;
//动态生成4个高压开锁通道指示灯和标签
for I:=1 to 4 do
begin
cnnHighNo[I]:=TLabel.Create(Self);
cnnHighNo[I].Parent:=MainFrm;
cnnHighNo[I].Font.Charset:=GB2312_CHARSET;
cnnHighNo[I].Font.Name:='宋体';
cnnHighNo[I].Font.Size:=12;
cnnHighNo[I].Height:=16;
cnnHighNo[I].Width:=48;
cnnHighNo[I].Transparent:=True;
cnnHighImg[I]:=TImage.Create(Self);
cnnHighImg[I].Parent:=MainFrm;
cnnHighImg[I].Height:=36;
cnnHighImg[I].Width:=36;
cnnHighImg[I].AutoSize:=True;
cnnHighImg[I].Transparent:=True;
cnnHighImg[I].Tag:=I;
try
cnnHighImg[I].Picture.LoadFromFile(PictureDir+'Gray.bmp');
except
if MessageBox(MainFrm.Handle,'主程序调用指定文件出错,"Gray.bmp"文件不存在!'+#10+#13+
'请在备份数据文件后重装应用程序。', '错误', MB_OK+MB_ICONERROR)=IDOK then
Exit;
end;
cnnHighNo[I].Left:=382+78*(I-1);
cnnHighNo[I].Top:=634;
cnnHighNo[I].Caption:='高压0'+IntToStr(I);
cnnHighImg[I].Left:=389+78*(I-1);
cnnHighImg[I].Top:=654;
end;
//动态生成4个延弧开锁通道指示灯和标签
for I:=1 to 4 do
begin
cnnArcNo[I]:=TLabel.Create(Self);
cnnArcNo[I].Parent:=MainFrm;
cnnArcNo[I].Font.Charset:=GB2312_CHARSET;
cnnArcNo[I].Font.Name:='宋体';
cnnArcNo[I].Font.Size:=12;
cnnArcNo[I].Height:=16;
cnnArcNo[I].Width:=48;
cnnArcNo[I].Transparent:=True;
cnnArcImg[I]:=TImage.Create(Self);
cnnArcImg[I].Parent:=MainFrm;
cnnArcImg[I].Height:=36;
cnnArcImg[I].Width:=36;
cnnArcImg[I].AutoSize:=True;
cnnArcImg[I].Transparent:=True;
cnnArcImg[I].Tag:=I;
try
cnnArcImg[I].Picture.LoadFromFile(PictureDir+'Gray.bmp');
except
if MessageBox(MainFrm.Handle,'主程序调用指定文件出错,"Gray.bmp"文件不存在!'+#10+#13+
'请在备份数据文件后重装应用程序。', '错误', MB_OK+MB_ICONERROR)=IDOK then
Exit;
end;
cnnArcNo[I].Left:=694+78*(I-1);
cnnArcNo[I].Top:=634;
cnnArcNo[I].Caption:='延弧0'+IntToStr(I);
cnnArcImg[I].Left:=701+78*(I-1);
cnnArcImg[I].Top:=654;
end;
end;
procedure TMainFrm.Timer1Timer(Sender: TObject);
var
tTime:TSYSTEMTIME;
begin
//**********************************读取系统时间****************************//
GetLocalTime(tTime);
Label1.Caption:=IntToStr(tTime.wYear)+'-'+
IntToStr(tTime.wMonth)+'-'+
IntToStr(tTime.wDay)+' '+
IntToStr(tTime.wHour)+':'+
IntToStr(tTime.wMinute)+':'+
IntToStr(tTime.wSecond);
end;
procedure TMainFrm.MinSpdBtnClick(Sender: TObject);
begin
//***********窗体最小化*************//
MainFrm.WindowState:=wsMinimized;
end;
procedure TMainFrm.CloseSpdBtnClick(Sender: TObject);
begin
//***********关闭窗体*************//
Close;
end;
procedure TMainFrm.FrameImgMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
//**************判断鼠标是否在标题栏,若是则MouseDownFlag为真****************//
if (X>FrameImg.Left) and (X<(FrameImg.Left+FrameImg.Width)) and
(Y>FrameImg.Top) and (Y<40) then
begin
golMouseDownFlag:=True;
golOldMouseX:=X;
golOldMouseY:=Y;
end;
end;
procedure TMainFrm.FrameImgMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
//********若MouseDownFlag为真,则鼠标在标题栏,可以实现窗体的拖动************//
if golMouseDownFlag=True then
begin
MainFrm.Left:=MainFrm.Left+(X-golOldMouseX);
MainFrm.Top:=MainFrm.Top+(Y-golOldMouseY);
end;
end;
procedure TMainFrm.FrameImgMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
//**************清鼠标按下标志***********//
golMouseDownFlag:=False;
end;
procedure TMainFrm.FileExitClick(Sender: TObject);
begin
//退出主程序
MainFrm.CloseSpdBtnClick(Sender);
end;
procedure TMainFrm.FileExitBtnClick(Sender: TObject);
begin
//退出主程序
MainFrm.CloseSpdBtnClick(Sender);
end;
procedure TMainFrm.ParaAddBtnClick(Sender: TObject);
begin
//参数添加
MainFrm.ParaAddClick(Sender);
end;
procedure TMainFrm.ParaAddClick(Sender: TObject);
begin
//参数添加
ParaAddFrm.Showmodal;
end;
procedure TMainFrm.ParaDataClick(Sender: TObject);
begin
//数据观察
ParaDataFrm.Showmodal;
end;
procedure TMainFrm.ParaDataBtnClick(Sender: TObject);
begin
//数据观察
MainFrm.ParaDataClick(Sender);
end;
procedure TMainFrm.WaveViewClick(Sender: TObject);
begin
//观察波形
WaveViewFrm.Show;
end;
procedure TMainFrm.WaveViewBtnClick(Sender: TObject);
begin
//观察波形
MainFrm.WaveViewClick(Sender);
end;
procedure TMainFrm.TestRunClick(Sender: TObject);
var
I:Integer;
str:String;
begin
TestControlForm.Showmodal;
//画出基准时间线和两条测时线
with WaveViewFrm.Chart1 do
begin
Series[0].AddXY(BaseTime,LeftAxis.Maximum-7.5,'',clYellow);
Series[0].AddXY(BaseTime,LeftAxis.Minimum,'',clYellow);
Series[1].AddXY(10,LeftAxis.Maximum-7.5,'',$000080FF);
Series[1].AddXY(10,LeftAxis.Minimum,'',$000080FF);
Series[2].AddXY(30,LeftAxis.Maximum-7.5,'',clTeal);
Series[2].AddXY(30,LeftAxis.Minimum,'',clTeal);
end;
with WaveViewFrm.Chart2 do
begin
Series[0].AddXY(BaseTime,WaveViewFrm.ScrollBar3.Min,'',clYellow);
Series[0].AddXY(BaseTime,-WaveViewFrm.ScrollBar3.Max-15,'',clYellow);
Series[1].AddXY(10,WaveViewFrm.ScrollBar3.Min,'',$000080FF);
Series[1].AddXY(10,-WaveViewFrm.ScrollBar3.Max-15,'',$000080FF);
Series[2].AddXY(30,WaveViewFrm.ScrollBar3.Min,'',clTeal);
Series[2].AddXY(30,-WaveViewFrm.ScrollBar3.Max-15,'',clTeal);
end;
With WaveViewFrm do
begin
golX1:=10;
golX2:=30;
golX:=abs(golX1-golX2);
end;
//画控制和校验波形
for I:=1 to 20 do
begin
conSeries[I].Clear;
VerSeries[I].Clear;
if I<11 then
begin
conSeries[I].Active:=False;
verSeries[I].Active:=False;
end;
end;
with ParaAddFrm do
begin
ADOConnection1.Close;
ADODataSet1.Close;
ADODataSet2.Close;
ADoConnection1.ConnectionString:=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+golFileName+
';Persist Security Info=False;Jet OLEDB:System database="";'+
'Jet OLEDB:Registry Path="";Jet OLEDB:Engine Type=5;'+
'Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;'+
'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:Create System Database=False;';
ADOConnection1.Connected:=True;
ADODataSet1.CommandText:='outChannel';
DataSource1.DataSet:=ADODataSet1;
ADODataSet1.Connection:=ADOConnection1;
ADODataSet1.Open;
ADODataSet2.CommandText:='Information';
DataSource2.DataSet:=ADODataSet2;
ADODataSet2.Connection:=ADOConnection1;
ADODataSet2.Open;
golTime[0]:=0;
//求出最长时间
for I:=1 to ADODataSet1.RecordCount do
begin
golTime[I]:=ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat+
ADODataSet1.FieldByName('第二段高电平持续时间').AsFloat;
if golTime[I]>golTime[0] then
golTime[0]:=golTime[I]+40;
if I<>ADODataSet1.RecordCount then
ADODataSet1.Next;
end;
ParaAddFrm.ADODataSet1.First;
for I:=1 to ADODataSet1.RecordCount do
begin
with WaveViewFrm do
begin
conSeries[I].AddXY(0,-25,'',clRed);
conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat,
-25,'',clRed);
conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat,
-12.5,'',clRed);
conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat+
ParaAddFrm.ADODataSet1.FieldByName('第一段高电平持续时间').AsFloat,-12.5,'',clRed);
conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat+
ParaAddFrm.ADODataSet1.FieldByName('第一段高电平持续时间').AsFloat,-25,'',clRed);
conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat,
-25,'',clRed);
conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat,
-12.5,'',clRed);
conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat+
ParaAddFrm.ADODataSet1.FieldByName('第二段高电平持续时间').AsFloat,-12.5,'',clRed);
conSeries[I].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat+
ParaAddFrm.ADODataSet1.FieldByName('第二段高电平持续时间').AsFloat,-25,'',clRed);
conSeries[I].AddXY(golTime[0],-25,'',clRed);
if I<ADODataSet1.RecordCount-1 then
begin
Str:=ParaAddFrm.ADODataSet1.FieldByName('通道序号').AsString;
conSeries[I].Tag:=StrToInt(Str[5]);
end;
conSeries[I+10].AddXY(0,2-I*4,'',clRed);
conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat,
2-I*4,'',clRed);
conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat,
3-I*4,'',clRed);
conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat+
ParaAddFrm.ADODataSet1.FieldByName('第一段高电平持续时间').AsFloat,3-I*4,'',clRed);
conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第一段高电平起始时间').AsFloat+
ParaAddFrm.ADODataSet1.FieldByName('第一段高电平持续时间').AsFloat,2-I*4,'',clRed);
conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat,
2-I*4,'',clRed);
conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat,
3-I*4,'',clRed);
conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat+
ParaAddFrm.ADODataSet1.FieldByName('第二段高电平持续时间').AsFloat,3-I*4,'',clRed);
conSeries[I+10].AddXY(ParaAddFrm.ADODataSet1.FieldByName('第二段高电平起始时间').AsFloat+
ParaAddFrm.ADODataSet1.FieldByName('第二段高电平持续时间').AsFloat,2-I*4,'',clRed);
conSeries[I+10].AddXY(golTime[0],2-I*4,'',clRed);
end;
if I<>ADODataSet1.RecordCount then
ADODataSet1.Next;
end;
ADOConnection1.Close;
ADODataSet1.Close;
ADODataSet2.Close;
end;
end;
procedure TMainFrm.TestRunBtnClick(Sender: TObject);
begin
//开始试验
MainFrm.TestRunClick(Sender);
end;
procedure TMainFrm.SelfCheckClick(Sender: TObject);
begin
//自检功能
SelfCheckFrm.ShowModal;
end;
procedure TMainFrm.SelfCheckBtnClick(Sender: TObject);
begin
//自检功能
MainFrm.SelfCheckClick(Sender);
end;
procedure TMainFrm.AboutClick(Sender: TObject);
begin
with SplashFrm do
begin
Label2.Visible:=True;
Image1.SendToBack;
Label2.BringToFront;
Showmodal;
end;
end;
procedure TMainFrm.AboutBtnClick(Sender: TObject);
begin
//关于
MainFrm.AboutClick(Sender);
end;
procedure TMainFrm.N1Click(Sender: TObject);
begin
//串口
SPortFrm.Showmodal;
end;
procedure TMainFrm.HelpRunClick(Sender: TObject);
begin
//帮助
HelpFrm.Showmodal;
end;
procedure TMainFrm.HelpRunBtnClick(Sender: TObject);
begin
//帮助
MainFrm.HelpRunClick(Sender);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -