📄 main.pas
字号:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Buttons, StdCtrls, jpeg, Menus, ComCtrls, ToolWin,
XPMenu, ImgList, ActnList, StdActns;
type
TMainFrm = class(TForm)
IconImg: TImage;
CaptionLbl: TLabel;
MinSpdBtn: TSpeedButton;
CloseSpdBtn: TSpeedButton;
MainMenu1: TMainMenu;
rtFile: TMenuItem;
rtPara: TMenuItem;
ParaAdd: TMenuItem;
N10: TMenuItem;
ParaData: TMenuItem;
FileExit: TMenuItem;
rtTest: TMenuItem;
TestRun: TMenuItem;
N15: TMenuItem;
TestVer: TMenuItem;
SelfCheck: TMenuItem;
rtView: TMenuItem;
WaveView: TMenuItem;
rtHelp: TMenuItem;
About: TMenuItem;
N22: TMenuItem;
HelpRun: TMenuItem;
CoolBar2: TCoolBar;
ImageList1: TImageList;
Label1: TLabel;
Image3: TImage;
Image4: TImage;
Label2: TLabel;
Image6: TImage;
Label3: TLabel;
Image7: TImage;
Label4: TLabel;
FrameImg: TImage;
OpenDialog1: TOpenDialog;
ToolBar2: TToolBar;
ToolButton7: TToolButton;
ParaAddBtn: TToolButton;
ToolButton9: TToolButton;
ParaDataBtn: TToolButton;
ToolButton11: TToolButton;
TestRunBtn: TToolButton;
ToolButton13: TToolButton;
TestVerBtn: TToolButton;
ToolButton15: TToolButton;
SelfCheckBtn: TToolButton;
ToolButton17: TToolButton;
WaveViewBtn: TToolButton;
ToolButton19: TToolButton;
AboutBtn: TToolButton;
ToolButton21: TToolButton;
HelpRunBtn: TToolButton;
ToolButton23: TToolButton;
FileExitBtn: TToolButton;
ToolButton25: TToolButton;
SaveDialog1: TSaveDialog;
Label7: TLabel;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
Timer1: TTimer;
Reset: TMenuItem;
N2: TMenuItem;
ResetBtn: TToolButton;
ToolButton2: TToolButton;
N1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure MinSpdBtnClick(Sender: TObject);
procedure CloseSpdBtnClick(Sender: TObject);
procedure FrameImgMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FrameImgMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FrameImgMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FileExitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ParaAddBtnClick(Sender: TObject);
procedure ParaAddClick(Sender: TObject);
procedure ParaDataClick(Sender: TObject);
procedure ParaDataBtnClick(Sender: TObject);
procedure WaveViewBtnClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure WaveViewClick(Sender: TObject);
procedure FileExitBtnClick(Sender: TObject);
procedure TestRunClick(Sender: TObject);
procedure TestRunBtnClick(Sender: TObject);
procedure SelfCheckClick(Sender: TObject);
procedure SelfCheckBtnClick(Sender: TObject);
procedure AboutClick(Sender: TObject);
procedure AboutBtnClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure HelpRunClick(Sender: TObject);
procedure HelpRunBtnClick(Sender: TObject);
private
public
{ Public declarations }
end;
var
MainFrm: TMainFrm;
golMouseDownFlag: Boolean;//鼠标是否在标题栏内按下
golOldMouseX,golOldMouseY:Integer;//鼠标按下后的坐标
cnnConNo,cnnVerNo: array[1..32] of TLabel; //控制/校验通道标签变量
cnnConImg,cnnVerImg:array[1..32] of TImage; //控制/校验通道图像变量
cnnHighNo,cnnArcNo: array[1..4] of TLabel; //高压/延弧开锁通道标签变量
cnnHighImg,cnnArcImg: array[1..4] of TImage; //高压/延弧开锁通道图标变量
PictureDir:String; //存放图片文件夹的路径
DataDir:String; //参数文件夹的路径
ShuJuDir:String; //数据文件夹的路径
golTime: array[0..10] of Double;
implementation
uses
Splash, ParaData, ParaAdd, TestVer, WaveView, TestControl, SelfCheck,
SPort, Help;
{$R *.dfm}
//**********本单元中所有代码用于改变显示器的分辨率为1024×768,85Hz************//
function DynamicResolution(X, Y, F: word): BOOL;
begin
Result := EnumDisplaySettings(nil, 0, lpDevMode);
if Result then
begin
lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY;
lpDevMode.dmPelsWidth := X;
lpDevMode.dmPelsHeight := Y;
lpDevMode.dmDisplayFrequency:=F;
Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
end;
end;
procedure TMainFrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//********************刷新显示器的分辨率为800*600***************************//
if Splash.disFlag=True then
DynamicResolution(800,600,85);
end;
procedure TMainFrm.FormCreate(Sender: TObject);
var
CurrTime: TSystemTime;
Sec: Word;
I: Integer;
lpRect:tRect;
cnnConCap: array[1..4] of TLabel;//4个控制标题
cnnVerCap: array[1..4] of TLabel;//4个校验标题
cnnUnlockCap: TLabel;//1个开锁标题
begin
//*************启动画面延时5秒***************//
GetSystemTime(CurrTime);
for I:=1 to 0 do
begin
Sec := CurrTime.wSecond + 1;
while Sec>CurrTime.wSecond do
GetSystemTime(CurrTime);
SplashFrm.Label1.Caption:=SplashFrm.Label1.Caption+'.';
SplashFrm.Update;
end;
//*************界面初始化时最大化显示************//
SystemParametersInfo(SPI_GETWORKAREA,0,@lpRect,0);
MainFrm.Top:=lpRect.Top;
MainFrm.Left:=lpRect.Left;
MainFrm.Width:=lpRect.Right-lpRect.Left;
MainFrm.Height:=lpRect.Bottom-lpRect.Top;
//取得指示灯图片所在的路径
PictureDir:=ExtractFilePath(Application.ExeName)+'Picture\';
//取得参数文件夹的路径
DataDir:=ExtractFilePath(Application.ExeName)+'Data\';
//取得数据文件夹的路径
ShuJuDir:=ExtractFilePath(Application.ExeName)+'数据\';
//动态创建4个控制通道的标题
for I:=1 to 4 do
begin
cnnConCap[I]:=TLabel.Create(Self);
cnnConCap[I].Parent:=MainFrm;
cnnConCap[I].Font.Charset:=GB2312_CHARSET;
cnnConCap[I].Font.Name:='宋体';
cnnConCap[I].Font.Size:=12;
cnnConCap[I].Font.Color:=clNavy;
cnnConCap[I].AutoSize:=True;
cnnConCap[I].Transparent:=True;
cnnConCap[I].Left:=256;
case I of
1: begin
cnnConCap[I].Top:=137;
cnnConCap[I].Caption:='控制通道01~08:';
end;
2: begin
cnnConCap[I].Top:=196;
cnnConCap[I].Caption:='控制通道09~16:';
end;
3: begin
cnnConCap[I].Top:=255;
cnnConCap[I].Caption:='控制通道17~24:';
end;
4: begin
cnnConCap[I].Top:=314;
cnnConCap[I].Caption:='控制通道25~32:';
end;
end;
end;
//动态创建4个校验通道的标题
for I:=1 to 4 do
begin
cnnVerCap[I]:=TLabel.Create(Self);
cnnVerCap[I].Parent:=MainFrm;
cnnVerCap[I].Font.Charset:=GB2312_CHARSET;
cnnVerCap[I].Font.Name:='宋体';
cnnVerCap[I].Font.Size:=12;
cnnVerCap[I].Font.Color:=clNavy;
cnnVerCap[I].AutoSize:=True;
cnnVerCap[I].Transparent:=True;
cnnVerCap[I].Left:=256;
case I of
1: begin
cnnVerCap[I].Top:=385;
cnnVerCap[I].Caption:='校验通道01~08:';
end;
2: begin
cnnVerCap[I].Top:=444;
cnnVerCap[I].Caption:='校验通道09~16:';
end;
3: begin
cnnVerCap[I].Top:=503;
cnnVerCap[I].Caption:='校验通道17~24:';
end;
4: begin
cnnVerCap[I].Top:=562;
cnnVerCap[I].Caption:='校验通道25~32:';
end;
end;
end;
//动态生成32个控制通道指示灯和标签
for I:=1 to 32 do
begin
cnnConNo[I]:=TLabel.Create(Self);
cnnConNo[I].Parent:=MainFrm;
cnnConNo[I].Font.Charset:=GB2312_CHARSET;
cnnConNo[I].Font.Name:='宋体';
cnnConNo[I].Font.Size:=12;
cnnConNo[I].Height:=16;
cnnConNo[I].Width:=48;
cnnConNo[I].Transparent:=True;
cnnConImg[I]:=TImage.Create(Self);
cnnConImg[I].Parent:=MainFrm;
cnnConImg[I].Height:=36;
cnnConImg[I].Width:=36;
cnnConImg[I].AutoSize:=True;
cnnConImg[I].Transparent:=True;
cnnConImg[I].Tag:=I;
try
cnnConImg[I].Picture.LoadFromFile(PictureDir+'Gray.bmp');
except
if MessageBox(MainFrm.Handle,'主程序调用指定文件出错,"Gray.bmp"文件不存在!'+#10+#13+
'请在备份数据文件后重装应用程序。', '错误', MB_OK+MB_ICONERROR)=IDOK then
Exit;
end;
case ((I-1) div 8) of
0:begin
cnnConNo[I].Left:=382+78*(I-1);
cnnConNo[I].Top:=137;
cnnConNo[I].Caption:='控制0'+IntToStr(I);
cnnConImg[I].Left:=389+78*(I-1);
cnnConImg[I].Top:=156;
end;
1:begin
cnnConNo[I].Left:=382+78*(I-9);
cnnConNo[I].Top:=196;
if I=9 then
cnnConNo[I].Caption:='控制0'+IntToStr(I)
else
cnnConNo[I].Caption:='控制'+IntToStr(I);
cnnConImg[I].Left:=389+78*(I-9);
cnnConImg[I].Top:=215;
end;
2:begin
cnnConNo[I].Left:=382+78*(I-17);
cnnConNo[I].Top:=255;
cnnConNo[I].Caption:='控制'+IntToStr(I);
cnnConImg[I].Left:=389+78*(I-17);
cnnConImg[I].Top:=274;
end;
3:begin
cnnConNo[I].Left:=382+78*(I-25);
cnnConNo[I].Top:=314;
cnnConNo[I].Caption:='控制'+IntToStr(I);
cnnConImg[I].Left:=389+78*(I-25);
cnnConImg[I].Top:=333;
end;
end;
end;
//动态生成32个校验通道指示灯和标签
for I:=1 to 32 do
begin
cnnVerNo[I]:=TLabel.Create(Self);
cnnVerNo[I].Parent:=MainFrm;
cnnVerNo[I].Font.Charset:=GB2312_CHARSET;
cnnVerNo[I].Font.Name:='宋体';
cnnVerNo[I].Font.Size:=12;
cnnVerNo[I].Height:=16;
cnnVerNo[I].Width:=48;
cnnVerNo[I].Transparent:=True;
cnnVerImg[I]:=TImage.Create(Self);
cnnVerImg[I].Parent:=MainFrm;
cnnVerImg[I].Height:=36;
cnnVerImg[I].Width:=36;
cnnVerImg[I].AutoSize:=True;
cnnVerImg[I].Transparent:=True;
cnnVerImg[I].Tag:=I;
try
cnnVerImg[I].Picture.LoadFromFile(PictureDir+'Gray.bmp');
except
if MessageBox(MainFrm.Handle,'主程序调用指定文件出错,"Gray.bmp"文件不存在!'+#10+#13+
'请在备份数据文件后重装应用程序。', '错误', MB_OK+MB_ICONERROR)=IDOK then
Exit;
end;
case ((I-1) div 8) of
0:begin
cnnVerNo[I].Left:=382+78*(I-1);
cnnVerNo[I].Top:=385;
cnnVerNo[I].Caption:='校验0'+IntToStr(I);
cnnVerImg[I].Left:=389+78*(I-1);
cnnVerImg[I].Top:=404;
end;
1:begin
cnnVerNo[I].Left:=382+78*(I-9);
cnnVerNo[I].Top:=444;
if I=9 then
cnnVerNo[I].Caption:='校验0'+IntToStr(I)
else
cnnVerNo[I].Caption:='校验'+IntToStr(I);
cnnVerImg[I].Left:=389+78*(I-9);
cnnVerImg[I].Top:=463;
end;
2:begin
cnnVerNo[I].Left:=382+78*(I-17);
cnnVerNo[I].Top:=503;
cnnVerNo[I].Caption:='校验'+IntToStr(I);
cnnVerImg[I].Left:=389+78*(I-17);
cnnVerImg[I].Top:=522;
end;
3:begin
cnnVerNo[I].Left:=382+78*(I-25);
cnnVerNo[I].Top:=562;
cnnVerNo[I].Caption:='校验'+IntToStr(I);
cnnVerImg[I].Left:=389+78*(I-25);
cnnVerImg[I].Top:=581;
end;
end;
end;
//动态创建1个开锁通道的标题
begin
cnnUnlockCap:=TLabel.Create(Self);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -