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

📄 unitquerycountform.pas

📁 串口短信猫收发软件。支持西门子TC35i设备
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -