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

📄 moduler.pas

📁 Monitor.dfm Meter.dpr pasMain.pas
💻 PAS
字号:
unit Moduler;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, DBChart, Buttons,
  StdCtrls, ImgList;

type
  TfrmModuler = class(TForm)
    DataListView: TListView;
    UserChart: TChart;
    Panel1: TPanel;
    Bevel1: TBevel;
    Image1: TImage;
    IDLab: TLabel;
    NAMELab: TLabel;
    ExitBtn: TSpeedButton;
    PrintBtn: TSpeedButton;
    FastBtn: TSpeedButton;
    PointBtn: TSpeedButton;
    Bevel2: TBevel;
    Bevel3: TBevel;
    Series2: TPointSeries;
    Series1: TBarSeries;
    labChart: TLabel;
    Min_E: TEdit;
    Bevel4: TBevel;
    imgSaveBtn: TSpeedButton;
    imgDotBtn: TSpeedButton;
    ImageList1: TImageList;
    PanelCount: TPanel;
    Label1: TLabel;
    InitialCB: TComboBox;
    Label2: TLabel;
    PreviousCB: TComboBox;
    Label3: TLabel;
    labCount: TLabel;
    SpeedButton1: TSpeedButton;
    procedure BitBtn1Click(Sender: TObject);
    procedure DataListViewCompare(Sender: TObject; Item1, Item2: TListItem;
      Data: Integer; var Compare: Integer);
    procedure PointBtnClick(Sender: TObject);
    procedure FastBtnClick(Sender: TObject);
    procedure ExitBtnClick(Sender: TObject);
    procedure PrintBtnClick(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure DataListViewSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmModuler: TfrmModuler;

implementation

uses DM, Global, Err, Promot, Report, frmcomsum;

{$R *.DFM}

procedure TfrmModuler.BitBtn1Click(Sender: TObject);
begin
    UserChart.Series[0].Active := FALSE;
    UserChart.Series[1].Active := TRUE;
end;

procedure TfrmModuler.DataListViewCompare(Sender: TObject; Item1,
  Item2: TListItem; Data: Integer; var Compare: Integer);
begin

    Compare := CompareText(Item1.SubItems[4],Item2.SubItems[4]);

end;


procedure TfrmModuler.PointBtnClick(Sender: TObject);
var
    Consumption: real;
    Pcolor: TColor;
    I: Integer;
begin
    //Control chart
    UserChart.SeriesList[0].clear;
    UserChart.SeriesList[1].Active := False;
    UserChart.SeriesList[0].Active := True;

    UserChart.BottomAxis.Maximum := DataListView.Items.Count;

    if ChartFlag = _WASTAGE then
    begin
        //Draw chart
        with DataListView do
        for I := 0 to Items.Count - 1 do
        begin
            if Items[I].SubItems.Strings[4] <> '' then
            begin
                //Normal display, Green
                Pcolor := clGreen;
                if  Items[I].SubItems.Strings[5]<>''  then Consumption := StrToFloat(Items[I].SubItems.Strings[5]);
            end
            else
            begin
                //Haven't total consumption
                Pcolor := clRed;
                Consumption := 0;
            end;

            frmModuler.UserChart.SeriesList[0].Add(Consumption, '', Pcolor);
         end;

         exit;
    end;

    //if ChartFlag = _TOTALPOWER then exit;
    //Draw chart
    with DataListView do
    for I := 0 to Items.Count - 1 do
    begin
        Consumption := StrToFloat(Items[I].SubItems.Strings[2]);

        //Normal display, Green
        Pcolor := clGreen;

        if (Consumption <= StrToFloat(Min_E.Text)) and (chartFlag <> _TOTALPOWER) then
        begin
            //<= Minimum Consumption
            Pcolor := clRed;
            Items[I].SubItems.Strings[7] := '*';
            Items[I].SubItems.Strings[8] := '用电量小于最小用电量';
        end;

        frmModuler.UserChart.SeriesList[0].Add(Consumption, '', Pcolor);

    end;


end;

procedure TfrmModuler.FastBtnClick(Sender: TObject);
var
    Consumption: real;
    Pcolor: TColor;
    I: Integer;
    Order, TimeStr: String;
begin

    if ChartFlag = _WASTAGE then
    begin

        if DataListView.SelCount = 0 then
        begin
            WarnAbout.Hide;
            WarnAbout.Promot.Caption := '无记录被选中!';
            WarnAbout.ShowModal;
            exit;
        end;

        TimeStr := DataListView.Items[DataListView.Selected.index].SubItems.Strings[0];
        Order := DataListView.Items[DataListView.Selected.index].Caption;
        DM1.TimeDB.Filter := 'DNO = ' + '''' + DNOstr + '''' + ' and RDT = ' + '''' + TimeStr + '''';

        if not DM1.TimeDB.Eof then
        begin
            frmPromot.Hide;
            frmPromot.Promot.Caption := '添加第[' + Order + '] 总供电量?';
            if frmPromot.ShowModal <> mrOK then exit;
        end
        else
            exit;

        //Write Wastage
        try
            if length(trim(Min_E.Text))=0 then
                begin
                        frmPromot.Hide;
                        frmPromot.Promot.Caption := '请输入最小用电量?';
                        if frmPromot.ShowModal <> mrOK then exit;
                        exit;
                end;

            DM1.TimeDB.Edit;
            DM1.TimeDB.FieldByName('WASTAGE').AsString := Min_E.Text;
            DM1.TimeDB.Post;
            DM1.TimeDB.FlushBuffers ;
            dm1.TimeDB.Refresh ;
            with DataListView do
            begin
                Items[Selected.index].SubItems.Strings[4] := Min_E.Text;
                Consumption := StrToFloat(Items[Selected.index].SubItems.Strings[3]);
                if  (Consumption <> 0) and (DM1.TimeDB.FieldByname('WASTAGE').asFloat<> 0) then
                begin
                    Consumption := ((DM1.TimeDB.FieldByname('WASTAGE').asFloat - Consumption) / DM1.TimeDB.FieldByname('WASTAGE').asFloat) * 100;
                    Items[Selected.index].SubItems.Strings[5] := Trim(Format('%2f',[Consumption]));
                end;
                frmModuler.PointBtn.Click;
            end;
        except
            exit
        end;

        exit;
    end;

    if ChartFlag = _TOTALPOWER then exit;
    //Control chart
    UserChart.SeriesList[1].clear;
    UserChart.SeriesList[0].Active := False;
    UserChart.SeriesList[1].Active := True;

    UserChart.BottomAxis.Maximum := DataListView.Items.Count;

    //Draw chart
    with DataListView do
    for I := 0 to Items.Count - 1 do
    begin
        Consumption := StrToFloat(Items[I].SubItems.Strings[2]);

        //Normal display, Green
        Pcolor := clGreen;

        if (Consumption <= StrToFloat(Min_E.Text)) and (ChartFlag <> _TOTALPOWER) then
        begin
            //<= Minimum Comsumption
            Pcolor := clRed;
            Items[I].SubItems.Strings[7] := '*';
            Items[I].SubItems.Strings[8] := '用电量为零';
        end;

        frmModuler.UserChart.SeriesList[1].Add(Consumption, '', Pcolor);

    end;

end;

procedure TfrmModuler.ExitBtnClick(Sender: TObject);
begin
    Close;
end;

procedure TfrmModuler.PrintBtnClick(Sender: TObject);
begin
        //UserChart.Print;




    frmconsumer.Query1.ParamByName('ParDNO').AsString := DNOstr;
    frmconsumer.Query1.ParamByName('Paruno').AsString := unostr;
    frmconsumer.Query1.Close;
    frmconsumer.Query1.Prepare;
    frmconsumer.Query1.Open;

    frmconsumer.QuickRep1.Preview;

end;



procedure TfrmModuler.FormResize(Sender: TObject);
begin
    Panel1.Width := frmModuler.Width;
end;

procedure TfrmModuler.DataListViewSelectItem(Sender: TObject;
  Item: TListItem; Selected: Boolean);
begin
    if Selected = FALSE then exit;

    if ChartFlag <> _WASTAGE then exit;

    Min_E.Text := '';
    with DataListView do
        DM1.TimeDB.Filter := 'DNO = ' + '''' + DNOstr + '''' + ' and RDT = ' + '''' + Items[Selected.index].SubItems.Strings[0] + '''';

    if not DM1.TimeDB.Eof then
        Min_E.Text := DM1.timedb.FieldByname('WASTAGE').AsString;
end;

procedure TfrmModuler.SpeedButton1Click(Sender: TObject);
var
    CurPower, PrePower: Real;
    I : Integer;
    FindF: Boolean;
begin
    if ChartFlag = _WASTAGE then exit;
    if ChartFlag = _TOTALPOWER then exit;
    FindF := FALSE;

    for I := 0 to DataListView.Items.Count - 1 do
        DataListView.Items[I].SubItems.Strings[9] := '';


    with DataListView do
    for I := 0 to Items.Count - 1 do
    begin
        if InitialCB.Text = Items[I].SubItems.Strings[6] then
        begin
           curPower := StrToFloat(Items[I].SubItems.Strings[ChartFlag]);
           Items[I].SubItems.Strings[9] := 'Up';
           FindF := TRUE;
           break;
        end;
    end;

    if FindF = FALSE then
    begin
        WarnAbout.Hide;
        WarnAbout.Promot.Caption := '本次抄表时间格式错误!';
        WarnAbout.ShowModal;
        exit;
    end;

    FindF := FALSE;

    with DataListView do
    for I := 0 to Items.Count - 1 do
    begin
        if PreviousCB.Text = Items[I].SubItems.Strings[6] then
        begin
           PrePower := StrToFloat(Items[I].SubItems.Strings[ChartFlag]);
           Items[I].SubItems.Strings[9] := 'Down';
           FindF := TRUE;
           break;
        end;
    end;

    if FindF = FALSE then
    begin
        WarnAbout.Hide;
        WarnAbout.Promot.Caption := '上次抄表时间格式错误!';
        WarnAbout.ShowModal;
        exit;
    end;
    labCount.Caption := Trim(Format('%8.2f', [CurPower - PrePower]));

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -