⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pasmain.pas

📁 Monitor.dfm Meter.dpr pasMain.pas
💻 PAS
📖 第 1 页 / 共 4 页
字号:
    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 + -