📄 pasmain.pas
字号:
frmModuler.labChart.Caption := '最小用电量';
frmModuler.FastBtn.Caption := '点图';
frmModuler.FastBtn.Glyph := frmModuler.imgDotBtn.Glyph;
frmModuler.Min_E.Text := '0';
//Search data
dm1.datadb.refresh;
dm1.datadb.first;
DM1.DataDB.Filter := 'DNO = ' + '''' + DNOstr + '''' + ' and ' + 'UNO = ' + '''' + UNOstr + '''';
//if DM1.dataDB.Locate('DNO;UNO', VarArrayOf([DNOstr, UNOstr]), [loCaseInsensitive]) then
if dm1.datadb.eof then
begin
frmPromot.Hide;
frmPromot.Promot.Caption := '无用户历史抄表记录!';
frmPromot.ShowModal;
exit;
end;
frmModuler.Hide;
//Create new culomns
with frmModuler.DataListView do
begin
Visible := FALSE;
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];
case StrToInt(Names[I][2]) of
0: NewColumn.Alignment := (taLeftJustify);
1: NewColumn.Alignment := (taCenter);
2: NewColumn.Alignment := (taRightJustify);
end;
case StrToInt(Names[I][3]) of
0: NewColumn.ImageIndex := -1;
1: NewColumn.ImageIndex := 0;
end;
end;
NewColumn.AutoSize := TRUE;
end;
frmModuler.InitialCB.Clear;
frmModuler.InitialCB.Text := '';
frmModuler.PreviousCB.Clear;
frmModuler.PreviousCB.Text := '';
//Load data
i:=1;
while not DM1.DataDB.Eof do
with frmModuler.DataListView do
begin
ListItem := Items.Add;
ListItem.Caption := inttostr(i); //Order
ListItem.ImageIndex := -1;
ListItem.SubItems.Add(DM1.DataDB.FieldByname('SF').AsString);
StrFIG := Trim(Format('%8.2f', [DM1.DataDB.FieldByname('FIG').AsFloat]));
ListItem.SubItems.Add(StrFIG);
ListItem.SubItems.Add(''); //Consumption
StrFIG := Trim(Format('%8.2f', [DM1.DataDB.FieldByname('peakFIG').AsFloat]));
ListItem.SubItems.Add(StrFIG);
StrFIG := Trim(Format('%8.2f', [DM1.DataDB.FieldByname('shoulderFIG').AsFloat]));
ListItem.SubItems.Add(StrFIG);
StrFIG := Trim(Format('%8.2f', [DM1.DataDB.FieldByname('offpeakFIG').AsFloat]));
ListItem.SubItems.Add(StrFIG);
ListItem.SubItems.Add(DM1.DataDB.FieldByname('RDT').AsString);
frmModuler.InitialCB.Items.Add(DM1.DataDB.FieldByname('RDT').AsString);
frmModuler.PreviousCB.Items.Add(DM1.DataDB.FieldByname('RDT').AsString);
ListItem.SubItems.Add(''); //Question
ListItem.SubItems.Add(''); //Possible reason
ListItem.SubItems.Add(''); //Mark
DM1.DataDB.Next;
i:=i+1;
end;
//Add order and difference
//frmModuler.DataListView.AlphaSort;
with frmModuler.DataListView do
begin
Consumption := StrToFloat(Items[0].SubItems.Strings[1]);
for I := 0 to Items.Count - 1 do
begin
Items[I].Caption := IntToStr(I);
Consumption := StrToFloat(Items[I].SubItems.Strings[1]) - Consumption;
Items[I].SubItems.Strings[2] := Trim(Format('%8.2f',[Consumption]));
Consumption := StrToFloat(Items[I].SubItems.Strings[1]);
end;
end;
frmModuler.Left := ( Screen.Width - frmModuler.Width ) div 2;
frmModuler.Top := ( Screen.Height - frmModuler.Height ) div 2;
frmModuler.PointBtn.Click;
frmModuler.DataListView.Visible := TRUE;
frmModuler.Caption := '指定用户用电量分析';
frmModuler.PanelCount.Visible := TRUE;
frmModuler.ShowModal;
end;
procedure TfrmMain.PrintAllExecute(Sender: TObject);
begin
if frmInfo.ListView1.SelCount = 0 then
begin
WarnAbout.Hide;
WarnAbout.Promot.Caption := '请选择台区!';
WarnAbout.ShowModal;
exit;
end;
DM1.TimeDB.Filter := 'DNO = ' + '''' + DNOstr + '''';
if DM1.TimeDB.Eof then exit;
printitem:=0;
chooserdt.combobox1.Clear;
chooserdt.combobox1.Text := '';
chooserdt.combobox2.Clear;
chooserdt.combobox2.Text := '';
DM1.TimeDB.First;
while not DM1.TimeDB.Eof do
begin
chooserdt.combobox1.Items.Add(DM1.TimeDB.FieldByname('RDT').AsString);
chooserdt.combobox2.Items.Add(DM1.TimeDB.FieldByname('RDT').AsString);
DM1.TimeDB.Next;
end;
chooserdt.showmodal;
end;
procedure TfrmMain.HanguptoDisconnection1Click(Sender: TObject);
begin
Hangup(Sender);
end;
procedure TfrmMain.ConnectLineExecute(Sender: TObject);
begin
if DM1.ProtocalDB.Eof then
begin
frmPromot.Hide;
frmPromot.Promot.Caption := '未设置通讯口!';
frmPromot.ShowModal;
exit;
end;
//DialExit := 0;
frmmain.Dial_T.Enabled:=false;
rtConnect:=0;
rtconnect:=Dialup(dTelStr);
if rtconnect=1 then
begin
frmmain.Dial_T.Enabled:=true;
exit;
end;
end;
procedure TfrmMain.StatisticLineWastage1Click(Sender: TObject);
var
ListItem: TListItem;
InitReading: array of Real;
CurReading: array of Real;
Consumption: array of Real;
LineWaste: Real;
I: Integer;
const
Names: array[0..6, 0..2] of string = (
('序号', '36', '1'),
('抄表时间', '116', '1'),
('本次总用电量', '90', '2'),
('上次总用电量', '90', '2'),
('用电量', '73', '2'),
('总供量', '80', '2'),
('线损', '70', '1')
);
begin
ChartFlag := _WASTAGE;
frmModuler.Hide;
frmModuler.IDLab.Caption := '台区编号: ' + DNOstr + ' ';
frmModuler.NAMELab.Caption := '台区名称: ' + dNameStr + ' ';
frmModuler.labChart.Caption := '总供量 kWh';
frmModuler.FastBtn.Caption := '&保存';
frmModuler.FastBtn.Glyph := frmModuler.imgSaveBtn.Glyph;
frmModuler.Min_E.Text := '';
//Search reading time
DM1.TimeDB.Filter := 'DNO = ' + '''' + DNOstr + '''';
if DM1.TimeDB.Eof then exit;
//Count initial consumption
with DM1.Backup do
begin
Close;
with SQL do
begin
Clear;
Add('select drt.rdt as rdt ,drt.wastage as wastage,sum(rmt.fig*mtr.amp) as curfig,sum(rmt.dif*mtr.amp) as dif,(sum(rmt.fig*mtr.amp)-sum(rmt.dif*mtr.amp)) as prefig from rmt,drt,mtr,bill');
Add('where drt.RDT =rmt.rdt and ');
Add(' mtr.usg =bill.usg and ');
Add(' bill.name<>"总表" and ');
Add('drt.DNO = ' + '''' + DNOstr + ''''+' and ');
Add('drt.dno=rmt.dno and rmt.dno=mtr.dno and rmt.uno=mtr.uno ');
Add('group by drt.rdt,drt.dno,drt.wastage;');
end;
Prepare;
Open;
end;
frmModuler.Hide;
//Create new culomns
with frmModuler.DataListView do
begin
Visible := FALSE;
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];
case StrToInt(Names[I][2]) of
0: NewColumn.Alignment := (taLeftJustify);
1: NewColumn.Alignment := (taCenter);
2: NewColumn.Alignment := (taRightJustify);
end;
end;
NewColumn.AutoSize := TRUE;
end;
//Add order and difference
frmModuler.DataListView.AlphaSort;
//Load data
I := 0;
DM1.backup.First;
while not DM1.backup.Eof do
with frmModuler.DataListView do
begin
ListItem := Items.Add;
ListItem.Caption := IntToStr(I); //Order
ListItem.ImageIndex := -1;
ListItem.SubItems.Add(DM1.backup.FieldByname('RDT').AsString);
ListItem.SubItems.Add(Trim(Format('%8.2f',[dm1.backup.fieldbyname('curfig').asfloat])));
ListItem.SubItems.Add(Trim(Format('%8.2f',[dm1.backup.fieldbyname('prefig').asfloat])));
ListItem.SubItems.Add(Trim(Format('%8.2f',[dm1.backup.fieldbyname('dif').asfloat])));
if (DM1.backup.FieldByname('WASTAGE').Asfloat <=0) or (dm1.backup.fieldbyname('dif').asfloat<=0)then
begin
ListItem.SubItems.Add('0');
ListItem.SubItems.Add('0');
end
else
begin
ListItem.SubItems.Add(Trim(Format('%8.2f',[dm1.backup.fieldbyname('wastage').asfloat])));
LineWaste := ((DM1.backup.FieldByname('WASTAGE').asFloat -dm1.backup.fieldbyname('dif').asfloat ) / DM1.backup.FieldByname('WASTAGE').asFloat) * 100;
ListItem.SubItems.Add(Trim(Format('%2f',[LineWaste])));
end;
DM1.backup.Next;
I := I + 1;
end;
with DM1.Backup do
begin
Close;
with SQL do
begin
Clear;
Add('select drt.rdt as rdt ,drt.wastage as wastage,sum(rmt.fig*mtr.amp) as curfig,sum(rmt.dif*mtr.amp) as dif,(sum(rmt.fig*mtr.amp)-sum(rmt.dif*mtr.amp)) as prefig from rmt,drt,mtr,bill');
Add('where drt.RDT =rmt.rdt and ');
Add(' mtr.usg =bill.usg and ');
Add(' bill.name="总表" and ');
Add('drt.DNO = ' + '''' + DNOstr + ''''+' and ');
Add('drt.dno=rmt.dno and rmt.dno=mtr.dno and rmt.uno=mtr.uno ');
Add('group by drt.rdt,drt.dno,drt.wastage;');
end;
Prepare;
Open;
end;
DM1.backup.First;
while not DM1.backup.Eof do
with frmModuler.DataListView do
begin
for i:=0 to frmmoduler.DataListView.Items.Count-1 do
begin
if items[i].SubItems.Strings[0]=DM1.backup.FieldByname('RDT').AsString then
items[i].SubItems.Strings[4]:=Trim(Format('%8.2f',[dm1.backup.fieldbyname('dif').asfloat]));
end;
DM1.backup.Next;
end;
for i:=0 to frmmoduler.DataListView.Items.Count-1 do
with frmModuler.DataListView do
begin
if (strtofloat(items[i].subitems.strings[3]) >0) and (strtofloat(items[i].subitems.strings[4]) >0) then
begin
LineWaste := ((strtofloat(items[i].subitems.strings[4])-strtofloat(items[i].subitems.strings[3]))/(strtofloat(items[i].subitems.strings[4])));
Items[i].SubItems.strings[5]:=(Trim(Format('%2f',[LineWaste])));
end;
end;
frmModuler.PointBtn.Click;
frmModuler.Left := ( Screen.Width - frmModuler.Width ) div 2;
frmModuler.Top := ( Screen.Height - frmModuler.Height ) div 2;
frmModuler.DataListView.Visible := TRUE;
frmModuler.Caption := '指定台区线损分析 Line Wastage Analysis for Distribution Transformer';
frmModuler.PanelCount.Visible := FALSE;
frmModuler.ShowModal;
end;
procedure TfrmMain.ImportDataClick(Sender: TObject);
begin
frminput.showmodal;
end;
procedure TfrmMain.HelpClick(Sender: TObject);
var
filename:string;
currentdir:pchar;
begin
filename:=application.ExeName ;
currentdir:=pchar('c:\program files\internet explorer\iexplore.exe '+extractfiledir(filename)+'\helps\index.htm');
//currentdir:=pchar('iexplorer '+extractfiledir(filename)+'\helps\index.htm');
WinExec(currentdir,SW_Show);
//WinExec('explorer',SW_show);
end;
procedure TfrmMain.PrintConsumerMenuClick(Sender: TObject);
begin
frmReportconsu.Query1.ParamByName('Paramdno').AsString := dnostr;
frmReportconsu.Query1.Close;
frmReportconsu.Query1.Prepare;
frmReportconsu.Query1.Open;
frmReportconsu.QuickRep1.Preview;
end;
procedure TfrmMain.Help_TClick(Sender: TObject);
begin
frmMain.HelpClick(Sender);
end;
procedure TfrmMain.PasswordClick(Sender: TObject);
begin
frmsecurity.showmodal;
end;
procedure TfrmMain.PowerOnAndOff1Click(Sender: TObject);
begin
frmpower.showmodal;
end;
procedure TfrmMain.PowerOnAndOff2Click(Sender: TObject);
begin
frmpower.Uno_E.Text:=frmread.datalistview.Items[frmread.datalistview.Selected.index].Caption;
frmMain.PowerOnandOff1click(Sender);
end;
procedure TfrmMain.Queryreaddata1Click(Sender: TObject);
begin
frmalert.showmodal;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -