📄 untmain.pas
字号:
unit untMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ImgList, ComCtrls, ToolWin, Menus, ExtCtrls, TeeProcs,
TeEngine, Chart, Series,Math, Buttons,DB,ADODB;
type
TFrmMAIN = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
displayForm1: TMenuItem;
N6: TMenuItem;
alarmSet: TMenuItem;
saveSpaceSet: TMenuItem;
baudSet: TMenuItem;
mmiHelp: TMenuItem;
ToolBar1: TToolBar;
ImageList1: TImageList;
N2: TMenuItem;
btnTemSearch: TMenuItem;
passwordSet: TMenuItem;
versionMes: TMenuItem;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
lblDate: TLabel;
lblTime: TLabel;
Bevel1: TBevel;
Bevel2: TBevel;
StaticText4: TStaticText;
StaticText5: TStaticText;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
edt1: TEdit;
edt2: TEdit;
edt3: TEdit;
edt4: TEdit;
edt5: TEdit;
edt6: TEdit;
edt7: TEdit;
edt8: TEdit;
edt9: TEdit;
edt10: TEdit;
Chart1: TChart;
Chart2: TChart;
edt11: TEdit;
edt12: TEdit;
edt13: TEdit;
edt14: TEdit;
edt15: TEdit;
edt16: TEdit;
edt17: TEdit;
edt18: TEdit;
edt19: TEdit;
edt20: TEdit;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
TmrMain: TTimer;
Series1: TFastLineSeries;
Series2: TFastLineSeries;
Label14: TLabel;
ComboBox1: TComboBox;
Label15: TLabel;
ComboBox2: TComboBox;
btnHumSearch: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure TmrMainTimer(Sender: TObject);
procedure ComboBox1CloseUp(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure btnTemSearchClick(Sender: TObject);
procedure btnHumSearchClick(Sender: TObject);
procedure alarmSetClick(Sender: TObject);
procedure saveSpaceSetClick(Sender: TObject);
procedure baudSetClick(Sender: TObject);
procedure versionMesClick(Sender: TObject);
procedure displayForm1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Const
SAVETIMECNT : Integer = 4; // 动态显示时间
var
FrmMAIN: TFrmMAIN;
edtTempArr:array[1..10] of Tedit; // 温度 text edit
edtHumArr:array[1..10] of Tedit; // 湿度 text edit
refreshTimeSpace : Integer = 0; // refresh time space
saveTimeSpace : Integer =0; // sava time space
tempTimeData: array[1..10] of Integer ;// 温度数据
humTimeData: array[1..10] of Integer ;// 湿度数据
tempPointCount : Integer = 0; // 温度显示点数
humPointCount : Integer = 0; // 湿度显示点数
selectedTempPos : Integer = 1; // 要显示的温度点
selectedHumPos : Integer = 1; // 要显示的湿度点
implementation
uses
LoginForm,untDMmain,untTemSearch, untHumSearch, untSysAlarmSet,
untSaveTimeSet, untBaudSet, untAbout;
{$R *.dfm}
procedure TFrmMAIN.FormCreate(Sender: TObject);
begin
Tmrmain.Enabled := true; // open timer
lblTime.Caption := TimeToStr(Time); // display time
lblDate.caption := DateToStr(Date); // display date
// 温度初始化
edtTempArr[1]:=edt1;
edtTempArr[2]:=edt3;
edtTempArr[3]:=edt5;
edtTempArr[4]:=edt7;
edtTempArr[5]:=edt9;
edtTempArr[6]:=edt11;
edtTempArr[7]:=edt13;
edtTempArr[8]:=edt15;
edtTempArr[9]:=edt17;
edtTempArr[10]:=edt19;
// 温度初始化
edtHumArr[1]:=edt2;
edtHumArr[2]:=edt4;
edtHumArr[3]:=edt6;
edtHumArr[4]:=edt8;
edtHumArr[5]:=edt10;
edtHumArr[6]:=edt12;
edtHumArr[7]:=edt14;
edtHumArr[8]:=edt16;
edtHumArr[9]:=edt18;
edtHumArr[10]:=edt20;
// 温度曲线设置
With Chart1 do
AnimatedZoom:=True;
begin
With Series1 do
begin
// set series1
Xvalues.DateTime := true;
end;
end;
// 湿度曲线设置
With Chart2 do
begin
AnimatedZoom:=True;
With Series2 do
// set series1
Xvalues.DateTime := true;
end;
end;
procedure TFrmMAIN.TmrMainTimer(Sender: TObject);
var
i : Integer;
begin
lblTime.Caption := TimeToStr(Time); // display time
lblDate.caption := DateToStr(Date); // display date
// 以下页面刷新操作
if refreshTimeSpace = SAVETIMECNT then
begin
refreshTimeSpace := 0; // reset data
INC(saveTimeSpace); // save time add
// TODO 这儿从下位机取得数据
for i := 1 to 10 do
begin
// 温度数据
tempTimeData[i] := RandomRange(16,22);
// 判断是否超过报警设置
if (tempTimeData[i] < lowTemp) or (tempTimeData[i] > highTemp) then
// red color
edtTempArr[i].Color := clRed
else
// white color
edtTempArr[i].Color := clWindow;
// 显示
edtTempArr[i].Text := InttoStr(tempTimeData[i]);
end;
for i := 1 to 10 do
begin
// 湿度数据
humTimeData[i] := RandomRange(20,80);
// 判断是否超过报警设置
if (humTimeData[i] < lowHum) or (humTimeData[i] > highHum) then
// red color
edtHumArr[i].Color := clRed
else
// white color
edtHumArr[i].Color := clWindow;
// 显示
edtHumArr[i].Text := InttoStr(humTimeData[i]);
end;
// 温度图形动态显示
With Chart1 do
begin
With Series1 do
begin
if tempPointCount> 5 then
// 5个点已满
Delete(0)
else
inc(tempPointCount);
AddXY(TIME,tempTimeData[selectedTempPos],'',clGreen);
end;
AddSeries(Series1);
end;
// 湿度图形动态显示
With Chart2 do
begin
With Series2 do
begin
if humPointCount> 5 then
// 5个点已满
Delete(0)
else
inc(humPointCount);
AddXY(TIME,humTimeData[selectedHumPos],'',clGreen);
end;
AddSeries(Series2);
end;
end else
inc(refreshTimeSpace);
// 以下存储操作
if saveTimeSpace = setSaveTimeSpace * 12 then
begin
saveTimeSpace := 0; // reset data
// 存储测试数据
try
DMmain.ADOTblRunData.open;
DMmain.ADOTblRunData.Refresh;
DMmain.ADOTblRunData.edit;
DMmain.ADOTblRunData.append;
DMmain.ADOTblRunData.Fields[0].value := Date + Time; // 日期+时间
for i:=1 to 10 do
begin
DMmain.ADOTblRunData.Fieldbyname('temp'+inttostr(i)).asfloat := tempTimeData[i];
DMmain.ADOTblRunData.Fieldbyname('hum'+inttostr(i)).asfloat := humTimeData[i];
end;
DMmain.ADOTblRunData.post;
DMmain.ADOTblRunData.close;
except
end;
{try
with DMmain.ADOQueryMain do
begin
Close;
SQL.Clear;
SQL.Add('select * from tblRunData ');
Open;
if RecordCount > 1 then Last; // go last
end;
DMmain.ADOQueryMain.Free;
//DMmain.ADOCnnctMain.BeginTrans; // 开始事务
DMmain.ADOQueryMain.Insert;
DMmain.ADOQueryMain.Fields[0].value := Date + Time; // 日期+时间
for i:=1 to 10 do
begin
DMmain.ADOQueryMain.Fieldbyname('temp'+inttostr(i)).asfloat := tempTimeData[i];
DMmain.ADOQueryMain.Fieldbyname('hum'+inttostr(i)).asfloat := humTimeData[i];
end;
// DMmain.ADOCnnctMain.CommitTrans; // 开始事务
except
// DMmain.ADOCnnctMain.RollbackTrans; // 回滚事务
end; }
end;
end;
procedure TFrmMAIN.ComboBox1CloseUp(Sender: TObject);
begin
// 温度显示点选择
selectedTempPos := ComboBox1.ItemIndex + 1;
end;
procedure TFrmMAIN.ComboBox2Change(Sender: TObject);
begin
// 湿度显示点选择
selectedHumPos := ComboBox2.ItemIndex + 1;
end;
procedure TFrmMAIN.btnTemSearchClick(Sender: TObject);
begin
// 显示温度查询
frmWdSearch.showModal;
end;
procedure TFrmMAIN.btnHumSearchClick(Sender: TObject);
begin
// 显示湿度查询
frmSdSearch.showModal;
end;
procedure TFrmMAIN.alarmSetClick(Sender: TObject);
begin
// 显示报警设置
frmAlarmSet.showModal;
end;
procedure TFrmMAIN.saveSpaceSetClick(Sender: TObject);
begin
// 显示报警设置
frmSaveTimeSet.showModal;
end;
procedure TFrmMAIN.baudSetClick(Sender: TObject);
begin
// 显示波特率设置
frmBaudSet.showModal;
end;
procedure TFrmMAIN.versionMesClick(Sender: TObject);
begin
// 显示关于信息
frmAbout.ShowModal;
end;
procedure TFrmMAIN.displayForm1Click(Sender: TObject);
begin
close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -