unitquerycountform.pas

来自「串口短信猫收发软件。支持西门子TC35i设备」· PAS 代码 · 共 465 行 · 第 1/2 页

PAS
465
字号
unit UnitQueryCountForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, RzTabs, RzButton, StdCtrls, Mask, RzEdit, ExtCtrls,
  RzPanel, Grids, DB, DBGrids, RzDBGrid, ComCtrls, RzLabel, RzCmboBx,
  TeEngine, Series, TeeProcs, Chart, DateUtils;

type
  TQueryCountForm = class(TForm)
    RzPageControl1: TRzPageControl;
    TabSheet1: TRzTabSheet;
    TabSheet2: TRzTabSheet;
    ImageList1: TImageList;
    RzPanel1: TRzPanel;
    RzPanel2: TRzPanel;
    RzBitBtn1: TRzBitBtn;
    DateTimePicker1: TDateTimePicker;
    RzDBGrid1: TRzDBGrid;
    RzLabel1: TRzLabel;
    RzLabel2: TRzLabel;
    DateTimePicker2: TDateTimePicker;
    RzPanel3: TRzPanel;
    RzDBGrid2: TRzDBGrid;
    RzPanel4: TRzPanel;
    RzLabel3: TRzLabel;
    RzLabel4: TRzLabel;
    RzBitBtn2: TRzBitBtn;
    DateTimePicker3: TDateTimePicker;
    DateTimePicker4: TDateTimePicker;
    TabSheet3: TRzTabSheet;
    TabSheet4: TRzTabSheet;
    RzBitBtn4: TRzBitBtn;
    RzBitBtn5: TRzBitBtn;
    RzPanel6: TRzPanel;
    RzLabel12: TRzLabel;
    RzLabel13: TRzLabel;
    RzBitBtn6: TRzBitBtn;
    DateTimePicker7: TDateTimePicker;
    DateTimePicker8: TDateTimePicker;
    TabSheet5: TRzTabSheet;
    RzPanel7: TRzPanel;
    RzLabel14: TRzLabel;
    RzLabel15: TRzLabel;
    RzBitBtn7: TRzBitBtn;
    DateTimePicker9: TDateTimePicker;
    DateTimePicker10: TDateTimePicker;
    RzPanel8: TRzPanel;
    RzDBGrid3: TRzDBGrid;
    RzLabel16: TRzLabel;
    RzLabel17: TRzLabel;
    RzComboBox_SendResult: TRzComboBox;
    RzPanel9: TRzPanel;
    RzLabel18: TRzLabel;
    RzLabel19: TRzLabel;
    RzLabel20: TRzLabel;
    RzLabel21: TRzLabel;
    RzLabel22: TRzLabel;
    RzLabel23: TRzLabel;
    RzLabel_LocalNum: TRzLabel;
    RzLabel_LocalFee: TRzLabel;
    RzLabel_RemoteNum: TRzLabel;
    RzLabel_RemoteFee: TRzLabel;
    RzLabel_TotNum: TRzLabel;
    RzLabel_TotFee: TRzLabel;
    RzLabel24: TRzLabel;
    RzComboBox_LocalNet: TRzComboBox;
    RzBitBtn8: TRzBitBtn;
    RzPanel5: TRzPanel;
    RzLabel5: TRzLabel;
    DateTimePicker5: TDateTimePicker;
    RzLabel6: TRzLabel;
    DateTimePicker6: TDateTimePicker;
    RzBitBtn3: TRzBitBtn;
    RzLabel7: TRzLabel;
    RzLabel_RequestTotNum: TRzLabel;
    RzLabel8: TRzLabel;
    RzLabel_RequestYesNum: TRzLabel;
    RzLabel9: TRzLabel;
    RzLabel_RequestNoNum: TRzLabel;
    RzLabel11: TRzLabel;
    RzLabel_RequestErrNum: TRzLabel;
    RzLabel10: TRzLabel;
    RzLabel_ResponseTotNum: TRzLabel;
    RzPanel10: TRzPanel;
    Chart1: TChart;
    Series1: TFastLineSeries;
    Series2: TFastLineSeries;
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure RzBitBtn1Click(Sender: TObject);
    procedure RzBitBtn2Click(Sender: TObject);
    procedure RzBitBtn3Click(Sender: TObject);
    procedure RzDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure RzBitBtn4Click(Sender: TObject);
    procedure RzBitBtn5Click(Sender: TObject);
    procedure RzBitBtn6Click(Sender: TObject);
    procedure RzBitBtn7Click(Sender: TObject);
    procedure RzBitBtn8Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure RzPageControl1Change(Sender: TObject);
    procedure RzDBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure RzDBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure RzDBGrid1DblClick(Sender: TObject);
    procedure RzDBGrid2DblClick(Sender: TObject);
  private

  public
    { Public declarations }
  end;

implementation

uses UnitDM, UnitPublicFun, UnitSendSMSForm;

{$R *.dfm}

procedure TQueryCountForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=27 then Close;
end;

procedure TQueryCountForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  DM.DSet_Request.Close;
  DM.DSet_Response.Close;
  DM.DSet_RequestFee.Close;
  Action := caFree;
end;

procedure TQueryCountForm.FormCreate(Sender: TObject);
begin
  DM.DSet_Request.Close;
  DM.DSet_Response.Close;
  DateTimePicker1.Date := PublicFun.FdMonthFirstDay;
  DateTimePicker2.Date := Now;
  DateTimePicker3.Date := PublicFun.FdMonthFirstDay;
  DateTimePicker4.Date := Now;
  DateTimePicker5.Date := PublicFun.FdMonthFirstDay;
  DateTimePicker6.Date := Now;
  DateTimePicker7.Date := PublicFun.FdMonthFirstDay;
  DateTimePicker8.Date := Now;
  DateTimePicker9.Date := PublicFun.FdMonthFirstDay;
  DateTimePicker10.Date := Now;
end;

procedure TQueryCountForm.RzBitBtn1Click(Sender: TObject);
var
  iSendResult: integer;
begin
  iSendResult := -1;
  //RzComboBox_SendResult.Items: 0-全部,1-已发,2-未发,3-失败
  if RzComboBox_SendResult.ItemIndex=1 then
    iSendResult := 1
  else if RzComboBox_SendResult.ItemIndex=2 then
    iSendResult := 0
  else if RzComboBox_SendResult.ItemIndex=3 then
    iSendResult := 2;
  DM.SelectRequest(FormatDateTime(FORMATDATE_STARTDEF, DateTimePicker1.Date), FormatDateTime(FORMATDATE_ENDDEF, DateTimePicker2.Date), iSendResult);
end;

procedure TQueryCountForm.RzBitBtn2Click(Sender: TObject);
begin
  DM.SelectResponse(FormatDateTime(FORMATDATE_STARTDEF, DateTimePicker3.Date), FormatDateTime(FORMATDATE_ENDDEF, DateTimePicker4.Date));
end;

procedure TQueryCountForm.RzBitBtn3Click(Sender: TObject);
var
  i: integer;
  RequestTotNum, RequestYesNum, RequestNoNum, RequestErrNum, ResponseTotNum: string;
  iDay: integer;
  ReqTotNum, ResTotNum: integer;
  dFirstMonth, dLastMonth: TDateTime;
  arReq, arRes: array of TQueryCountChart;
  oldCursor: TCursor;
begin
  RequestTotNum := '0';
  RequestYesNum := '0';
  RequestNoNum := '0';
  RequestErrNum := '0';
  ResponseTotNum := '0';
  Series1.Clear;
  Series2.Clear;
  oldCursor := Screen.Cursor;
  Screen.Cursor := crSQLWait;
  try
    if not DM.QueryCount(FormatDateTime(FORMATDATE_STARTDEF, DateTimePicker5.Date),
                         FormatDateTime(FORMATDATE_ENDDEF, DateTimePicker6.Date),
                         RequestTotNum, RequestYesNum, RequestNoNum, ResponseTotNum) then
    begin
      Application.MessageBox('统计失败!', '提示', MB_OK + MB_ICONINFORMATION);
    end
    else
    begin
      RequestErrNum := IntToStr(StrToInt(RequestTotNum) - StrToInt(RequestYesNum) - StrToInt(RequestNoNum));
    end;
    
    //绘图
    dFirstMonth := StrToDate(FormatDateTime('YYYY-MM-01', DateTimePicker5.Date));
    dLastMonth := IncMonth(dFirstMonth, 1) - 1;
    iDay := DaysBetween(dFirstMonth, dLastMonth);
    SetLength(arReq, iDay);
    SetLength(arRes, iDay);

    for i:=0 to iDay-1 do
    begin
      Series1.AddX(StrToFloat(FormatDateTime('YYYYMMDD', dFirstMonth+i)));
      Series2.AddX(StrToFloat(FormatDateTime('YYYYMMDD', dFirstMonth+i)));
    end;

    Chart1.Title.Text.Text := FormatDateTime('YYYY"年"MM"月"', dFirstMonth)+'收发短信数量统计曲线图';
    if DM.QueryCountChart(FormatDateTime(FORMATDATE_STARTDEF, dFirstMonth),
                          FormatDateTime(FORMATDATE_ENDDEF, dLastMonth),
                          ReqTotNum, ResTotNum, arReq, arRes) then
    begin
      for i:=0 to ReqTotNum-1 do
      begin
        Series1.AddXY(arReq[i].iYear, arReq[i].iCount);
      end;
      for i:=0 to ResTotNum-1 do
      begin
        Series2.AddXY(arRes[i].iYear, arRes[i].iCount);
      end;
      if (ReqTotNum<=0) and (ResTotNum<=0) then

⌨️ 快捷键说明

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