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

📄 mainform.~pas

📁 电力行业前台收费程序,需要有后台SQL数据库,和电费管理系统配合应用.
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
{
 发票里需要用到的项目
 ShiShouFee---------实收金额
 ZhiNaJin-----------实收滞纳金
 BenYueYE-----------本月余额

 2003-7-18  更新
 -------------------------------------
 1.增加
}

unit MainForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Commfunc, ComCtrls, ExtCtrls, Buttons,Db,
  Spin, ReportControl, ImgList, Menus, Grids, DBGrids, ToolWin, Mask,
  ToolEdit, CurrEdit, IniFiles, Variants, ADODB,math;

type
  TDllCreate=function(AOwner:THandle):Integer;
  TDllInitDb=procedure(ConnectionStr,HuHao,LSH,OpName:PChar;YongHuID,ShouFeiXH,OpID:Integer);
                       //连接字符串,户号,流水号,收费序号,操作员        用户ID,操作员ID
  TDllPrepay=procedure(YuJiaoFee:double);
  TVoidProc=procedure;

  TFormMain = class(TForm)
    Panel2: TPanel;
    PopupMenuSet: TPopupMenu;
    MenuS_ShouFeiSet: TMenuItem;
    N2: TMenuItem;
    MenuS_Quit: TMenuItem;
    PopupMenuPrint: TPopupMenu;
    MenuP_Print: TMenuItem;
    MenuP_View: TMenuItem;
    N6: TMenuItem;
    MenuS_Selete: TMenuItem;
    PopupMenuHelp: TPopupMenu;
    MenuH_Sum: TMenuItem;
    N9: TMenuItem;
    MenuH_About: TMenuItem;
    ImageList1: TImageList;
    MenuP_ZuoFei: TMenuItem;
    PageControl: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    ScrollBoxView: TScrollBox;
    LabelShY: TLabel;
    DataSourceGrid: TDataSource;
    CEditShiShou: TCurrencyEdit;
    MenuH_ListWindow: TMenuItem;
    RepRunShouFei: TReportRunTime;
    Label4: TLabel;
    CurrencyEditZHNJ: TCurrencyEdit;
    Panel1: TPanel;
    PanelOpName: TPanel;
    PanelDate: TPanel;
    Panel5: TPanel;
    StaticText1: TStaticText;
    SpinEditPiaoHao: TSpinEdit;
    Label3: TLabel;
    LabelZHL: TLabel;
    SpeedButtonPrn: TSpeedButton;
    SpeedButtonPre: TSpeedButton;
    SpeedButtonZuoFei: TSpeedButton;
    QueryMain: TADOQuery;
    QueryYiShou: TADOQuery;
    QueryWDFP: TADOQuery;
    Label9: TLabel;
    LabelSYYE: TLabel;
    Label11: TLabel;
    LabelYSZNJ: TLabel;
    PanelHeJi: TPanel;
    SpdBtnClear: TSpeedButton;
    Label1: TLabel;
    LabelYSJE: TLabel;
    ComboBoxCurFP: TComboBox;
    StringGridDETAIL: TStringGrid;
    ControlBar: TControlBar;
    ToolBarMenu: TToolBar;
    ToolButtonSetup: TToolButton;
    ToolButtonPrint: TToolButton;
    ToolButtonHelp: TToolButton;
    ToolBarLB: TToolBar;
    ToolButtonName: TToolButton;
    EditHuHao: TEdit;
    ToolButtonSel: TToolButton;
    ToolBarRB: TToolBar;
    ToolButtonSelPrn: TToolButton;
    ToolButtonSum: TToolButton;
    Label2: TLabel;
    LabelHJ: TLabel;
    Label6: TLabel;
    LabelYJ: TLabel;
    ToolBarRT: TToolBar;
    RadioButtonWSH: TToolButton;
    RadioButtonYSH: TToolButton;
    RadioButtonWDFP: TToolButton;
    Panel3: TPanel;
    DBGridMain: TDBGrid;
    Panel4: TPanel;
    Label5: TLabel;
    LabelSum: TLabel;
    ToolButtonData: TToolButton;
    PopupMenuData: TPopupMenu;
    Menu_DataIn: TMenuItem;
    Menu_DataZuoFei: TMenuItem;
    Menu_PrePay: TMenuItem;
    N5: TMenuItem;
    N7: TMenuItem;
    CheckBox1: TCheckBox;
    Label7: TLabel;
    LabelYC: TLabel;
    Splitter1: TSplitter;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure MenuS_QuitClick(Sender: TObject);
    procedure MenuS_ShouFeiSetClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure RadioButtonWSHClick(Sender: TObject);
    procedure ToolButtonSelClick(Sender: TObject);
    procedure MenuH_SumClick(Sender: TObject);
    procedure MenuS_SeleteClick(Sender: TObject);
    procedure SpdBtnClearClick(Sender: TObject);
    procedure QueryMainAfterOpen(DataSet: TDataSet);
    procedure MenuH_ListWindowClick(Sender: TObject);
    procedure MenuP_ViewClick(Sender: TObject);
    procedure MenuH_AboutClick(Sender: TObject);
    procedure MenuP_PrintClick(Sender: TObject);
    procedure MenuP_ZuoFeiClick(Sender: TObject);
    procedure QueryYiShouAfterOpen(DataSet: TDataSet);
    procedure ToolButtonSelPrnClick(Sender: TObject);
    procedure ToolButtonSumClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SpeedButtonPrnClick(Sender: TObject);
    procedure SpeedButtonPreClick(Sender: TObject);
    procedure SpeedButtonZuoFeiClick(Sender: TObject);
    procedure RadioButtonYSHClick(Sender: TObject);
    procedure RadioButtonWDFPClick(Sender: TObject);
    procedure QueryWDFPAfterOpen(DataSet: TDataSet);
    procedure QueryMainAfterScroll(DataSet: TDataSet);
    procedure QueryYiShouAfterScroll(DataSet: TDataSet);
    procedure QueryWDFPAfterScroll(DataSet: TDataSet);
    procedure CEditShiShouExit(Sender: TObject);
    procedure CEditShiShouKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ToolButtonWSHClick(Sender: TObject);
    procedure ToolButtonYSHClick(Sender: TObject);
    procedure ToolButtonWDFPClick(Sender: TObject);
    procedure Menu_PrePayClick(Sender: TObject);
    procedure CurrencyEditZHNJKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Menu_DataInClick(Sender: TObject);
    procedure Menu_DataZuoFeiClick(Sender: TObject);
    procedure QueryMainAfterClose(DataSet: TDataSet);
    procedure QueryYiShouAfterClose(DataSet: TDataSet);
    procedure QueryWDFPAfterClose(DataSet: TDataSet);
    procedure CEditShiShouEnter(Sender: TObject);
    procedure FormResize(Sender: TObject);
  private
    ChkIdx : Integer;

    BrowSqlLst,RecallSqlLst,SumSqlStr,WDFPLst:TStringList;//浏览、已打、合计、未打发票的SQL
    YuShouFei,                 //预交
    ZHIDINGZHNJ,               //指定滞纳金
    JINEQUZHENG,               //金额取整
    FenCiShouFei,              //分次收费
    DirectPreView,             //直接预览
    ViewDetail :Boolean;       //显示明细
    YuEisNegative :Boolean;    //举例说明:如果应缴0.85,实缴0.9,如果YuEisNegative为True 则本月余额为-0.5否则为+0.5
                               //对应设置:如果xt_inifile中存在一条这样的记录('取整方式','余额符号','多缴为正',null)则YuEisNegative为False否则为True
    QUZHENGWS:Integer;         //取整位数,(0---元    1----角)

    JieDuanHeJi:Extended;//阶段合计

    RefreshUIFee : Boolean; //当QueryMain(待收费记录)里记录滚动时是否需要刷新界面
                            //全部打印过程中不需要刷新界面,打印完毕则需要

    procedure LoadBasicSeting;
    procedure FillReport(IsPrint:Boolean);
    function GetPrintRepName(FName:String):String;
    Procedure EnableButtons;
    procedure ResetCtrls;
    procedure ReadDetail(AdoQuery: TAdoQuery);
    procedure ResetValue;
    procedure PreCallDll(DllHandle:THandle); //调用DLL的第一步:初始化
    procedure ShowORHideZHAOLING(IsShow : Boolean);
  public

    procedure OpenQueryProc(SQLStr:String;Query:TAdoQuery);
    procedure DBGridFldRef(Query:TAdoQuery);
  end;
var
  FormMain: TFormMain;
  IniFile:TIniFile;

  OpName: String;//当前操作员
  OpID:Integer;//当前操作员编号
  OpDate:TDateTime;//当前操作日期

function GetFieldorValue(FVString:String;ForV:char):String;
procedure RefreshDesk(RefreshIdx : Integer);
implementation

uses DataMod, SelOpDate, ShouFeiSet, SelectCase, InfoWin, AboutBox,
  PrinInfoUnit;
var
  ChangeMySelf:Boolean;
  FormInfoList: TFormInfoList;
{$R *.DFM}

{TFormMain}
procedure RefreshDesk(RefreshIdx : Integer);
begin
  if Assigned(FormMain) then
    with FormMain do begin
        case RefreshIdx of
            0:
            if QueryMain.Active then begin
                QueryMain.Close;
                QueryMain.Open;
                DBGridFldRef(QueryMain);
            end;
            1:
            if QueryYiShou.Active then begin
                QueryYiShou.Close;
                QueryYiShou.Open;
                DBGridFldRef(QueryYiShou);
            end;
            2:
            if QueryWDFP.Active then begin
                QueryWDFP.Close;
                QueryWDFP.Open;
                DBGridFldRef(QueryWDFP);
            end;
            3:begin
              case ChkIdx of
                  0:
                  if QueryMain.Active then begin
                      QueryMain.Close;
                      QueryMain.Open;
                      DBGridFldRef(QueryMain);
                  end;
                  1:
                  if QueryYiShou.Active then begin
                      QueryYiShou.Close;
                      QueryYiShou.Open;
                      DBGridFldRef(QueryYiShou);
                  end;
                  2:
                  if QueryWDFP.Active then begin
                      QueryWDFP.Close;
                      QueryWDFP.Open;
                      DBGridFldRef(QueryWDFP);
                  end;
              end;
            end;
        end;
    end;
end;

procedure TFormMain.FormCreate(Sender: TObject);
var
  AppPath:String;
begin
  RefreshUIFee:=True;
  YuEisNegative:=True;

  AppPath:=ExtractFilePath(Application.ExeName);
  IniFile:=TIniFile.Create(AppPath+'ShouFei.Sys');
  
  BrowSqlLst:=TStringList.Create;
  RecallSqlLst:=TStringList.Create;
  SumSqlStr:=TStringList.Create;
  WDFPLst:=TStringList.Create;

  JieDuanHeJi:=0;
  FormInfoList:=nil;

  SpinEditPiaoHao.Value:=IniFile.ReadInteger('最新设置','发票票号',0);

  with DataMD.ADOQueryPub do begin
       Close;
       SQL.Clear;
       SQL.Add('select 1 from xt_inifile where 类别=''取整方式'' and 名称=''余额符号'' and 值=''多缴为正''');
       Open;
       if RecordCount>0 then
          YuEisNegative:=False;
       Close;
  end;
end;

procedure TFormMain.ResetCtrls; //设置界面
begin
  LabelSYYE.Caption:='0.00';
  LabelYSJE.Caption:='0.00';LabelYSZNJ.Caption:='0.00';
  LabelHJ.Caption:='0.00';
  CEditShiShou.Value:=0;CurrencyEditZHNJ.Value:=0;LabelZHL.Caption:='0.00';
  ShowORHideZHAOLING(False);
  Label4.Visible:=ZHIDINGZHNJ;
  CurrencyEditZHNJ.Visible:=ZHIDINGZHNJ;
//  Label6.Visible:=FenCiShouFei;
//  LabelYJ.Visible:=FenCiShouFei;
end;

procedure TFormMain.FormShow(Sender: TObject);
begin
  if Self.Height>700 then
     PageControl.Height:=515
  else
     PageControl.Height:=355;
  StringGridDETAIL.ColWidths[1]:=140;
  StringGridDETAIL.Rows[0].Strings[0]:='明细条目';
  StringGridDETAIL.Rows[0].Strings[1]:='对应数值';    
  PanelOpName.Caption:='操作员:'+OpName;
  LoadBasicSeting;
  ResetCtrls;
  ToolBarLB.Height:=22;
  ToolBarRT.Height:=22;
  ToolBarRB.Height:=22;
  EnableButtons;
end;

procedure TFormMain.OpenQueryProc(SQLStr:String;Query:TAdoQuery);
begin
  with Query do begin
    Close;
    SQL.Clear;
    SQL.Add(SQLStr);
    if Parameters.FindParam('OpName')<>nil then begin
      Parameters.ParamByName('OpName').DataType:=ftString;
      Parameters.ParamByName('OpName').Size:=50;
      Parameters.ParamByName('OpName').Value:=OpName;
    end;
    if Parameters.FindParam('OpID')<>nil then
      Parameters.ParamByName('OpID').Value:=OpID;
    if Parameters.FindParam('CurDate')<>nil then begin
      Parameters.ParamByName('OpDate').DataType:=ftDateTime;
      Parameters.ParamByName('OpDate').Value:=OpDate;
    end;
    Open;
  end;
end;

⌨️ 快捷键说明

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