📄 main.pas
字号:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls, StdCtrls,inifiles,Prodave, ExtCtrls,TypInfo,
WinSkinData;
type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N5: TMenuItem;
Timer1: TTimer;
N6: TMenuItem;
N7: TMenuItem;
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect;
Selected: Boolean);
procedure FormCreate(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N12Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure ddddd1Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
private
{ Private declarations }
public
procedure DisplayHint(Sender: TObject);
{ Public declarations }
end;
const
tcolortype1: array[0..20] of tcolor=(TColor($ff0000), TColor($00ff00), TColor($0000ff),
TColor($ffff00), TColor($00ffff), TColor($ff00ff),
TColor($800000), TColor($008000), TColor($000080),
TColor($808000), TColor($008080), TColor($800080) ,
TColor($80ff00), TColor($0080ff), TColor($ff0080),
TColor($8000ff), TColor($ff8000), TColor($00ff80),
TColor($800000), TColor($008000), TColor($000080) );
var
Form1: TForm1;
commustatus:integer; //通讯状态 0未通讯 1 通讯正常 2 通讯错误
parabyteorword:integer;//读写字/字节 0为字 1 为字节
paraautosave:integer ;//参数自动保存
pareswap:boolean;//高低字节交换
paraautotry:boolean;
paraautotrycount:integer;//自动重试 次数
paraautofilter:integer;//自动过滤错误数据
//通讯地址设置
comm_addr:integer;
comm_segment:integer;
comm_slot:integer;
comm_rock:integer;
load_status:integer;//
ErrMess:array[0..255] of char; //
mixdata:array[0..21]of MixDataInfo ; //混合读取 命令区
mixdatacount:integer;
mixreturndata:array[0..255] of byte; //混合读取缓冲区
mixdatatype:array[0..255] of char;//混合读取类型区
mixdatasave:array[0..25]of integer; //混合读取数据数组
databasenamelog:string;//记录用数据库名称
databaselogok:boolean;//记录用数据库名称创建成功
databaselogconnectok:boolean;//记录用数据库连接成功
databasenameview:string;//浏览用数据库名称
datalogstatus:integer; //记录数据库时通讯状态
datalogname:string;
datalogdata:string;
datalogcommand:string;
databasetable:string; //数据库表项名称
databasetype:string;//数据库类型表项
adr_table: adr_table_type ; //通讯地址表
linkname:array[0..255] of char; //连接名
serrisnum:integer;//图表显示的数量
databasetablearay:array [0..22]of string; //记录数据库表项名称数组
sercount: integer;
serpage:integer;
drawdatatime: array[0..25] of array[0..1023] of double;
implementation
uses para, Unit3, strct, Unit5, Unit6, Unit4, drawdisp_time, report;
{$R *.dfm}
procedure TForm1.N3Click(Sender: TObject);
begin
form2:=tform2.Create(self);
form2.ShowModal();
form2.free ;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
WinExec('S7EPATSX.EXE', SW_SHOWNORMAL);
end;
procedure TForm1.N3DrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
begin
StatusBar1.Panels[1].Text:=n3.Hint;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
I,j: Integer;
filename:string;
myinifile:TInifile;
begin
sercount:=0;
serpage:=0;
//初始化内存数组
for I := 0 to 25 do // Iterate
begin
for j := 0 to 1023 do // Iterate
begin
drawdatatime[i][j]:=1000;
end; // for
end; // for
form1.Constraints.MaxHeight:=80;
form1.Constraints.MaxWidth:=Screen.Width ;
form1.Constraints.MinHeight:=72;
form1.Constraints.MinWidth:=500;
Application.OnHint := DisplayHint;
filename:=ExtractFilePath(paramstr(0))+'myini.ini';
myinifile:=TInifile.Create(filename);
parabyteorword:= myinifile.readinteger('程序参数设置',' 读写字/字节',0);
paraautosave:= myinifile.readinteger('程序参数设置',' 参数自动保存',0);
pareswap:= myinifile.readbool('程序参数设置',' 高低字节交换',false);
paraautotrycount:= myinifile.readinteger('程序参数设置',' 自动重试次数',0);
paraautofilter:= myinifile.readinteger('程序参数设置',' 自动过滤错误数据',0);
paraautotry:= myinifile.readbool('程序参数设置',' 自动重试',false);
comm_addr:= myinifile.readinteger('通讯参数设置',' 地址',2);
comm_segment:= myinifile.readinteger('通讯参数设置',' 段号',0);
comm_slot:= myinifile.readinteger('通讯参数设置',' 插槽号',2);
comm_rock:= myinifile.readinteger('通讯参数设置',' 机架号',0);
MainMenu1.Items[2].Enabled:=false;
// MainMenu1.Items[3].Enabled:=false;
end;
procedure TForm1.DisplayHint(Sender: TObject);
begin
StatusBar1.Panels[1].Text:= Application.Hint;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
form5.ShowModal();
end;
procedure TForm1.N4Click(Sender: TObject);
begin
form3.ShowModal();
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
filename:string;
myinifile:TInifile;
begin
filename:=ExtractFilePath(paramstr(0))+'myini.ini';
myinifile:=TInifile.Create(filename);
myinifile.writeinteger('程序参数设置',' 读写字/字节 ', parabyteorword);
myinifile.writeinteger('程序参数设置',' 参数自动保存 ', paraautosave);
myinifile.writebool('程序参数设置',' 高低字节交换 ', pareswap);
myinifile.writeinteger('程序参数设置',' 自动重试次数 ',paraautotrycount);
myinifile.writebool('程序参数设置',' 自动重试 ',paraautotry);
myinifile.writeinteger('程序参数设置',' 自动过滤错误数据', paraautofilter);
myinifile.writeinteger('通讯参数设置',' 地址 ',comm_addr);
myinifile.writeinteger('通讯参数设置',' 段号 ',comm_segment);
myinifile.writeinteger('通讯参数设置',' 插槽号 ',comm_slot);
myinifile.writeinteger('通讯参数设置',' 机架号 ' ,comm_rock);
end;
procedure TForm1.N12Click(Sender: TObject);
begin
statusbar1.Panels[2].Text:='请稍等待';
adr_table.adr := comm_addr; {address}
adr_table.segmentid := comm_segment; {segment id}
adr_table.slotno := comm_slot; {slot no}
adr_table.rackno := comm_rock; {rack no}
adr_table.end0:=0;
strcopy(linkname,'S7ONLINE');
load_status := Load_tool(1,addr(linkname),addr(adr_table));
if (load_status=0)
then begin
commustatus:=1; //通讯正常
statusbar1.Panels[0].Text:='已连接';
statusbar1.Panels[2].Text:='';
end
else
begin
if(Prodave.Error_Message(load_status, ErrMess)=0)then
begin
statusbar1.Panels[2].Text:=errmess;
end
else
statusbar1.Panels[2].Text:='ERROR.DAT 文件错误';
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
StatusBar1.Panels[0].width:=60;
StatusBar1.Panels[2].width:=150;
StatusBar1.Panels[1].width:=form1.Width-60-150;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
if (form1.Width<=220) then form1.Width:=230;
StatusBar1.Panels[0].width:=60;
StatusBar1.Panels[2].width:=150;
StatusBar1.Panels[1].width:=form1.Width-60-150;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if ( commustatus=1 ) then
begin
MainMenu1.Items[2].Enabled:=true;
MainMenu1.Items[3].Enabled:=true;
end else
begin
MainMenu1.Items[2].Enabled:=false;
// MainMenu1.Items[3].Enabled:=false;
end;
end;
procedure TForm1.N13Click(Sender: TObject);
begin
statusbar1.Panels[2].Text:='请稍等待';
load_status := Unload_Tool;
if (load_status=0) then
begin
commustatus:=0;
statusbar1.Panels[2].Text:='';
end
else
begin
if(Prodave.Error_Message(load_status, ErrMess)=0)then
begin
statusbar1.Panels[2].Text:=errmess;
end
else
statusbar1.Panels[2].Text:='ERROR.DAT 文件错误';
end;
end;
procedure TForm1.ddddd1Click(Sender: TObject);
begin
form9.ShowModal();
end;
procedure TForm1.N10Click(Sender: TObject);
begin
form6:=tform6.Create(self);
form6.ShowModal();
form6.free ;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
form4:=tform4.Create(self);
form4.ShowModal();
form4.free;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
winexec('notepad xx.txt',SW_RESTORE );
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -