📄 pasmain.pas
字号:
unit pasMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ActnList, Menus, ImgList, OleCtrls, MSCommLib_TLB, ComCtrls, ToolWin,
ExtCtrls, StdCtrls,DB, Buttons,inifiles,dbtables;
// ExtCtrls, RThread, StdCtrls,DB, Buttons;
const
CM_RESTORE=WM_USER+$1000;
APPNAME='Meter';
type
TfrmMain = class(TForm)
StatusBar: TStatusBar;
CoolBar1: TCoolBar;
MainMenu: TMainMenu;
Setup: TMenuItem;
EditInfo: TMenuItem;
EditUser: TMenuItem;
S1: TMenuItem;
SetupPtr: TMenuItem;
PrintInfo: TMenuItem;
ImportData: TMenuItem;
ExportData: TMenuItem;
S3: TMenuItem;
ExitS: TMenuItem;
Control: TMenuItem;
Readkwh: TMenuItem;
Monitorkwh: TMenuItem;
N3: TMenuItem;
AutoON: TMenuItem;
AutoOFF: TMenuItem;
SetupTiming: TMenuItem;
RunTimg: TMenuItem;
Other: TMenuItem;
Help: TMenuItem;
N6: TMenuItem;
About: TMenuItem;
ToolBarImage: TImageList;
MenuAction: TActionList;
ExitSys: TAction;
InfoClick: TAction;
ToolBar1: TToolBar;
Consumer_T: TToolButton;
Setup_T: TToolButton;
Download_T: TToolButton;
Monitor_T: TToolButton;
Print_T: TToolButton;
Dialog_T: TToolButton;
Dial_T: TToolButton;
Help_T: TToolButton;
Transformer_T: TToolButton;
TimerOut: TTimer;
MSComm: TMSComm;
S2: TMenuItem;
Password: TMenuItem;
S4: TMenuItem;
SetupParam: TMenuItem;
R1: TMenuItem;
StopTiming: TMenuItem;
N1: TMenuItem;
ChartBtn: TToolButton;
Read_kwh: TAction;
SetParam: TAction;
PrintDialog: TPrintDialog;
PrinterSetupDialog: TPrinterSetupDialog;
RunTestTimer: TTimer;
DeleteHistoryMenu: TPopupMenu;
DeleteHistory: TMenuItem;
DeleteTSEGMenu: TPopupMenu;
N10: TMenuItem;
PrintHistory: TMenuItem;
price_menu: TMenuItem;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
Analyze1: TMenuItem;
CountLineWaste1: TMenuItem;
CustomManthlyConsumption1: TMenuItem;
Custom1: TMenuItem;
N9: TMenuItem;
N4: TMenuItem;
StatisticConsumer: TAction;
N2: TMenuItem;
PrintAll: TAction;
OnOffMenu: TPopupMenu;
DialingtoConnection1: TMenuItem;
HanguptoDisconnection1: TMenuItem;
ConnectLine: TAction;
Image1: TImage;
ToolButton1: TToolButton;
N7: TMenuItem;
HotImageList: TImageList;
StatisticLineWastage1: TMenuItem;
N5: TMenuItem;
PrintMenu: TPopupMenu;
PrintConsumerMenu: TMenuItem;
PowerOnAndOff1: TMenuItem;
PowerOnAndOff2: TMenuItem;
Queryreaddata1: TMenuItem;
procedure ExitSysExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Download_TClick(Sender: TObject);
procedure TimerOutTimer(Sender: TObject);
procedure Monitor_TClick(Sender: TObject);
procedure MSCommComm(Sender: TObject);
procedure Consumer_TClick(Sender: TObject);
procedure TB3Click(Sender: TObject);
procedure Read_kwhExecute(Sender: TObject);
procedure SaveData(Sender: TObject);
procedure SetParamExecute(Sender: TObject);
procedure EditInfoClick(Sender: TObject);
procedure Transformer_TClick(Sender: TObject);
procedure EditUserClick(Sender: TObject);
procedure MonitorkwhClick(Sender: TObject);
procedure Interactive1Click(Sender: TObject);
procedure SetupPtrClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure Dialog_TClick(Sender: TObject);
procedure delay1s(sender:tobject);
procedure SAVETN0Click(Sender: TObject);
procedure ExportDataClick(Sender: TObject);
procedure SetupTimingClick(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure DeleteHistoryClick(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure RunTimgClick(Sender: TObject);
procedure RunTestTimerTimer(Sender: TObject);
procedure StopTimingClick(Sender: TObject);
procedure AutoONClick(Sender: TObject);
procedure AutoOFFClick(Sender: TObject);
procedure price_menuClick(Sender: TObject);
procedure StatusBarDrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
procedure FormShow(Sender: TObject);
procedure AboutClick(Sender: TObject);
procedure CountLineWasteClick(Sender: TObject);
procedure CustomManthlyConsumption1Click(Sender: TObject);
procedure StatisticConsumerExecute(Sender: TObject);
procedure PrintAllExecute(Sender: TObject);
procedure HanguptoDisconnection1Click(Sender: TObject);
procedure ConnectLineExecute(Sender: TObject);
procedure StatisticLineWastage1Click(Sender: TObject);
procedure ImportDataClick(Sender: TObject);
procedure HelpClick(Sender: TObject);
procedure PrintConsumerMenuClick(Sender: TObject);
procedure Help_TClick(Sender: TObject);
procedure PasswordClick(Sender: TObject);
procedure PowerOnAndOff1Click(Sender: TObject);
procedure PowerOnAndOff2Click(Sender: TObject);
procedure Queryreaddata1Click(Sender: TObject);
private
{ Private declarations }
//RT: ReadThread;
NewColumn: TListColumn;
ListItem: TListItem;
Prog: TProgressBar;
DrawRect: TRect;
public
procedure Createparams(var params:Tcreateparams);override;
procedure RestoreRequest(var message:TMessage);message CM_restore;
{ Public declarations }
end;
var
frmMain: TfrmMain;
GetCompletedF: integer;
GetData: string;
//oldwindowproc:pointer;
//mymsg:LONGINT;
sortflag: integer;
TimeOutF: Boolean;
//rtConnect: Integer;
implementation
uses Info, ReadData, InterCom, DM, Setting, Monitor, Moduler,
Promot, Autotest, Report, Global, Report2, Price,
About, Err, input, OUTPUT, tpwin, choose, reportconsumer, Logindlg,
security, power, Alert;
{$R *.DFM}
procedure Tfrmmain.CreateParams(var params:Tcreateparams);
begin
inherited createparams(params);
params.WinClassName:='Meter';
end;
procedure Tfrmmain.restorerequest(var message:Tmessage);
begin
messagebox(handle,'程序'''+appname+'''已经运行了.','信息',mb_ok+mb_iconinformation+mb_systemmodal);
if isiconic(application.handle)=true then
application.restore
else
application.bringtofront;
end;
procedure TfrmMain.ExitSysExecute(Sender: TObject);
begin
Timerout.Enabled := False;
TimeoutF := True;
ActiveCommand := False;
DialExit := 1;
frmMain.Close;
Application.Terminate ;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
var
myinifile:Tinifile;
filename,vs:string;
dbpath:string;
i:integer;
finddb:boolean;
tempname:string;
mystringlist:tstringlist;
begin
finddb:=false;
filename:=application.ExeName ;
tempname:=extractfiledir(filename)+'\database';
filename:=extractfiledir(filename)+'\readme.ini';
myinifile:=Tinifile.Create(filename);
vs:=myinifile.Readstring('数据库','DB NAME','');
if vs='' then vs:='meter4';
dbpath:=myinifile.Readstring('数据库','PATH',tempname);
if dbpath='' then dbpath:=tempname;
dbname:=vs;
MyStringList := TStringList.Create;
try
Session.GetAliasNames(MyStringList);
for I := 0 to MyStringList.Count - 1 do
if dbname=MyStringList[I] then finddb:=true;
finally
MyStringList.Free;
end;
if finddb=false then
begin
with session do
begin
try
session.AddStandardAlias(dbname,dbpath,'paradox');
session.SaveConfigFile;
finally
//showmessage('创建错误');
end;
end;
end;
MSComm.PortOpen := TRUE;
DialRS232 := 0;
rtconnect:=0;
RUNFLAG := USEREDIT;
ActiveCommand := TRUE;
MonitorFlag:=False;
SearchFlag:=False;
TimeoutF := FALSE;
Auto := 0;
AutoCRM :=0;
DialOK:='';
printitem:=0;
end;
procedure TfrmMain.MSCommComm(Sender: TObject);
//var
//StrTest: string;
begin
// GetData := '';
// GetData := MSComm.Input;
// Command.Memo1.Lines[Command.Memo1.Lines.Count] := GetData;
// StrTest := copy(GetData, 2, 2);
// if StrTest = '00' then GetCompletedF := 1;
end;
procedure TfrmMain.Download_TClick(Sender: TObject);
begin
//Get ProgessBar Parameters
with Prog do
begin
top := DrawRect.top;
left := DrawRect.left;
width := DrawRect.Right - DrawRect.Left;
height := DrawRect.Bottom - DrawRect.Top;
Visible := True;
Parent := StatusBar;
Smooth := True;
end;
ChartFlag := COMMANDTN0;
//Automatic Meter Reading
frmMain.Read_kwhExecute(Sender);
end;
procedure TfrmMain.TimerOutTimer(Sender: TObject);
begin
TIMING:=1;
TimeOutF := TRUE;
end;
procedure TfrmMain.Monitor_TClick(Sender: TObject);
begin
if CHARTflag<>useredit then exit;
RUNFLAG := MONITORING;
Monitorflag:=true;
Monitor_T.Enabled := FALSE;
//Close Info, DataText
frmInfo.ListView1.Visible := FALSE;
frmInfo.Panel1.Visible := FALSE;
//Show image of Watt-hour meter
frmInfo.MonitorPanel.Top := 0;
frmInfo.MonitorPanel.Visible := TRUE;
end;
procedure TfrmMain.TB3Click(Sender: TObject);
begin
frmSetup.ShowModal;
end;
procedure TfrmMain.Read_kwhExecute(Sender: TObject);
var
I, Num, ErrorNum: Integer;
rStr,tempstr: String;
const
Names: array[0..17, 0..2] of string = (
('表 号', '100', '0'),
('中继标志', '26', '1'),
('成功标志', '26', '1'),
('当前总电量', '73', '2'),
('上次总电量', '73', '2'),
('用电量', '73', '2'),
('当前峰电量', '73', '2'),
('当前平电量', '73', '2'),
('当前谷电量', '73', '2'),
('当前尖电量', '73', '2'),
('量程', '0', '2'),
('脉冲常数', '0', '2'),
('冻结电量', '73', '2'),
('相位', '42', '1'),
('中继深度', '0', '1'),
('中继表号', '0', '1'),
('抄表因子', '0', '1'),
('读表时间', '120', '0')
);
begin
if frmRead.DataPanel.Visible = TRUE then frmRead.DataPanel.Visible :=False;
Download_T.Enabled := FALSE;
frmRead.Caption := 'Automatic Meter Reading Window [' + dNameStr + ']';
//Change Items Nane
with frmRead.DataListView do
begin
Items.BeginUpdate;
Items.Clear;
Columns.Clear;
//Add new column
for I := Low(Names) to High(Names) do
begin
NewColumn := Columns.Add;
NewColumn.Width := StrToInt(Names[I][1]);
NewColumn.Caption := Names[I][0];
NewColumn.ImageIndex := -1;
case StrToInt(Names[I][2]) of
0: NewColumn.Alignment := (taLeftJustify);
1: NewColumn.Alignment := (taCenter);
2: NewColumn.Alignment := (taRightJustify);
end;
end;
NewColumn.AutoSize := TRUE;
Items.EndUpdate;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -