uni_outlaypayout.pas

来自「一个非常不错的经费报销管理软件」· PAS 代码 · 共 693 行 · 第 1/2 页

PAS
693
字号
unit Uni_OutlayPayout;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, XPMenu, ComCtrls, ToolWin, DB, ADODB, ExtCtrls, Grids,
  DBGridEh, DBGrids, StdCtrls, Mask, DBCtrls, Buttons, RzPanel, RzSplit,
  ImgList;

type
  Tfrm_OutlayPayout = class(TForm)
    popNavigator: TPopupMenu;
    mniFirst: TMenuItem;
    mniPrior: TMenuItem;
    mniNext: TMenuItem;
    mniLast: TMenuItem;
    dsMain: TDataSource;
    qryMain: TADOQuery;
    dsDetail: TDataSource;
    qryDetail: TADOQuery;
    mnuXP: TXPMenu;
    N1: TMenuItem;
    mniList: TMenuItem;
    popRow: TPopupMenu;
    mniAddLine: TMenuItem;
    mniDelLine: TMenuItem;
    qryMainid: TStringField;
    qryMaincNum: TStringField;
    qryMaincbranchsNum: TStringField;
    qryMaincUser: TStringField;
    qryMaincAuditUser: TStringField;
    qryMaindtSaveTime: TDateTimeField;
    qryMaindtAuditTime: TDateTimeField;
    qryMainiState: TIntegerField;
    qryMainiReco: TLargeintField;
    qryMaincRemark: TStringField;
    qryDetailid: TStringField;
    qryDetailcNum: TStringField;
    qryDetailcItemNum: TStringField;
    qryDetailcbranchsNum: TStringField;
    qryDetailfMancount: TFloatField;
    qryDetailfStandard: TFloatField;
    qryDetailfPayoutMoney: TFloatField;
    qryDetailiState: TIntegerField;
    qryMaincBranchsName: TStringField;
    qryDetailcBranchsName: TStringField;
    qryDetailcItemNO: TStringField;
    qryDetailcItemName: TStringField;
    Splitter: TRzSplitter;
    grdMain: TDBGridEh;
    Panel2: TPanel;
    Label1: TLabel;
    pnlList: TPanel;
    Label2: TLabel;
    Label8: TLabel;
    SB_record: TSpeedButton;
    DBEdit2: TDBEdit;
    DBEdit8: TDBEdit;
    grdDetail: TDBGridEh;
    Label3: TLabel;
    DBEdit3: TDBEdit;
    Label5: TLabel;
    DBEdit5: TDBEdit;
    Label4: TLabel;
    DBEdit4: TDBEdit;
    Label6: TLabel;
    DBEdit6: TDBEdit;
    Label7: TLabel;
    DBEdit1: TDBEdit;
    PopupMenu1: TPopupMenu;
    N_State: TMenuItem;
    TB_Main: TToolBar;
    tbNew: TToolButton;
    tbEdit: TToolButton;
    tbDelete: TToolButton;
    ToolButton2: TToolButton;
    tbAuditing: TToolButton;
    ToolButton4: TToolButton;
    tbSave: TToolButton;
    tbCancel: TToolButton;
    ToolButton3: TToolButton;
    tbRefresh: TToolButton;
    ToolButton1: TToolButton;
    ToolButton7: TToolButton;
    tbHelp: TToolButton;
    ToolButton6: TToolButton;
    tbExit: TToolButton;
    TB_First: TToolButton;
    TB_Prior: TToolButton;
    TB_Next: TToolButton;
    TB_Last: TToolButton;
    ToolButton5: TToolButton;
    ToolButton8: TToolButton;
    ImageList1: TImageList;
    Panel1: TPanel;
    ToolBar1: TToolBar;
    TBState: TToolButton;
    Panel3: TPanel;
    dtBegin: TDateTimePicker;
    dtEnd: TDateTimePicker;
    Label9: TLabel;
    edtQuery: TEdit;
    Label10: TLabel;
    N_Query: TMenuItem;
    PopupMenu2: TPopupMenu;
    Label12: TLabel;
    Edt_Branchs: TEdit;
    SpeedButton1: TSpeedButton;
    TB_DelLine: TToolButton;
    TB_AuditingCancel: TToolButton;
    qryDetailcbranchsNo: TStringField;
    procedure tbNewClick(Sender: TObject);
    procedure tbEditClick(Sender: TObject);
    procedure qryMainAfterScroll(DataSet: TDataSet);
    procedure tbDeleteClick(Sender: TObject);
    procedure tbAuditingClick(Sender: TObject);
    procedure tbSaveClick(Sender: TObject);
    procedure tbCancelClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure tbRefreshClick(Sender: TObject);
    procedure tbHelpClick(Sender: TObject);
    procedure tbExitClick(Sender: TObject);
    procedure mniFirstClick(Sender: TObject);
    procedure SB_recordClick(Sender: TObject);
    procedure grdDetailColumns3EditButtonClick(Sender: TObject;
      var Handled: Boolean);
    procedure grdDetailColumns4EditButtonClick(Sender: TObject;
      var Handled: Boolean);
    procedure grdDetailColumns6EditButtonClick(Sender: TObject;
      var Handled: Boolean);
    procedure mniAddLineClick(Sender: TObject);
    procedure mniDelLineClick(Sender: TObject);
    procedure N_StateClick(Sender: TObject);
    procedure TB_FirstClick(Sender: TObject);
    procedure TB_LastClick(Sender: TObject);
    procedure TB_PriorClick(Sender: TObject);
    procedure TB_NextClick(Sender: TObject);
    procedure qryDetailAfterInsert(DataSet: TDataSet);
    procedure ToolButton1Click(Sender: TObject);
    procedure N_QueryClick(Sender: TObject);
    procedure dtBeginChange(Sender: TObject);
    procedure grdDetailDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
    procedure SpeedButton1Click(Sender: TObject);
    procedure TB_DelLineClick(Sender: TObject);
    procedure TB_AuditingCancelClick(Sender: TObject);
  private
    { Private declarations }
    //设置导航条按钮状态
    procedure SetNavigatorButtons;
    //执行导航操作
    procedure DoNavigator(AMove: integer);
    //按钮控制
    procedure SetButtonsEnable(Enable: boolean);
    //设置数据集编辑状态
    procedure SetAddEditMode(Enable: boolean);
    //刷新子表数据
    procedure RefreshDetail;
    //删除数据
    procedure DeleteRecord;
    //保存数据
    procedure SaveRecord;
    //取消数据
    procedure CancelRecord;
    //字段校验
    function CHKFields: boolean;    
  public
    { Public declarations }
  end;

var
  frm_OutlayPayout: Tfrm_OutlayPayout;

implementation

uses Uni_DM, Uni_Function, Uni_Branchs, Uni_Item,Uni_Main;

{$R *.dfm}

{ Tfrm_OutlayPayout }

procedure Tfrm_OutlayPayout.SetButtonsEnable(Enable: boolean);
begin
//  tbSave.Enabled:= Enable;
//  tbCancel.Enabled:= Enable;
//  tbNew.Enabled:= not Enable;
//  tbEdit.Enabled:= not Enable;
//  tbDelete.Enabled:= not Enable;
//  tbAuditing.Enabled:= not Enable;
//  tbRow.Enabled:= Enable;
//  tbNavigator.Enabled:= not Enable;
//  tbRefresh.Enabled:= not Enable;
end;

procedure Tfrm_OutlayPayout.DoNavigator(AMove: integer);
begin
  case AMove of
    0:qryMain.First;
    1:qryMain.Prior;
    2:qryMain.Next;
    3:qryMain.Last;
  end;
  SetNavigatorButtons;
end;

procedure Tfrm_OutlayPayout.SetAddEditMode(Enable: boolean);
begin
//  pnlList.Visible:=Enable;
//  grdMain.Visible:=not Enable;
//  if Enable then
//  begin
//    grdDetail.Options:=grdDetail.Options+[dgEditing];
//  end
//  else
//  begin
//    grdDetail.Options:=grdDetail.Options-[dgEditing];
//  end;
end;

procedure Tfrm_OutlayPayout.SetNavigatorButtons;
begin
  mniFirst.Enabled:=not qryMain.Bof;
  mniPrior.Enabled:=not qryMain.Bof;
  mniNext.Enabled:=not qryMain.Eof;
  mniLast.Enabled:=not qryMain.Eof;
end;

procedure Tfrm_OutlayPayout.RefreshDetail;
begin
//  qryDetail.Close;
//  qryDetail.SQL.Text:='select * from PayoutMX '+
//    'where iState>0 and cNum='+QuotedStr(qryMain.FieldByName('cNum').AsString);
//  qryDetail.Open;
end;

procedure Tfrm_OutlayPayout.DeleteRecord;
begin
//  qryDetail.First;
//  while not qryDetail.Eof do qryDetail.Delete;
//  qryMain.Delete;
end;

procedure Tfrm_OutlayPayout.SaveRecord;
begin
//  qryMain.Edit;
//  qryMain.FieldByName('iState').AsInteger:=1;
//  qryMain.FieldByName('dtSaveTime').AsDateTime:=now;
  //
//  if qryMain.State in [dsEdit,dsInsert] then
//    qryMain.Post;
  //
//  qryDetail.Edit;
//  qryDetail.FieldByName('cBranchsNum').AsString:=qryMain.FieldByName('cBranchsNum').AsString;
//  qryDetail.FieldByName('cNum').AsString:=qryMain.FieldByName('cNum').AsString;
//  qryDetail.FieldByName('iState').AsInteger:=1;
//  if qryDetail.State in [dsEdit,dsInsert] then
//    qryDetail.Post;
end;

procedure Tfrm_OutlayPayout.CancelRecord;
begin
//  qryDetail.Cancel;
//  qryMain.Cancel;
  //
//  if qryMain.FieldByName('iState').AsInteger=0 then
//  begin
//    if not qryMain.Active then Exit;
//    if qryMain.IsEmpty then Exit;
    //
//    DeleteRecord;
//  end;
end;

function Tfrm_OutlayPayout.CHKFields: boolean;
begin
  result:=true;

end;

procedure Tfrm_OutlayPayout.tbNewClick(Sender: TObject);
begin
  if not PurviewSet('经费支出制单') then Exit;

  N_StateClick(Sender);//状态
  qryMain.Close;
  qryMain.Open;
  qryMain.Insert;

  qryMain.FieldByName('id').AsString:=GetGUID;
  qryMain.FieldByName('iState').AsInteger:=0;
  qryMain.FieldByName('cUser').AsString:=DM.bsLoginUser.FieldByName('cName').AsString;
  qryMain.FieldByName('dtSaveTime').AsDateTime:=now;
  qryMain.Post;

  //qryDetail.Insert;

end;

procedure Tfrm_OutlayPayout.tbEditClick(Sender: TObject);
begin
  if not PurviewSet('经费支出制单') then Exit;

  if not qryMain.Active then exit;
  if qryMain.IsEmpty then
  begin
    MessageBoxInfo('没有可以修改的记录!');
    exit;
  end;
  if qryMain.FieldByName('iState').AsInteger>1 then Exit;//保存状态以上的单据不能修改
  //SetAddEditMode(true);
  //qryMain.Edit;
  //SetButtonsEnable(true);
  N_StateClick(Sender);
end;

procedure Tfrm_OutlayPayout.qryMainAfterScroll(DataSet: TDataSet);
begin
  //RefreshDetail;
  qryDetail.Close;
  qryDetail.SQL.Text:='select * from PayoutMX '+
    'where iState>0 and cNum='+QuotedStr(qryMain.FieldByName('cNum').AsString);
  qryDetail.Open;
  TBState.ImageIndex:=qryMain.FieldByName('iState').AsInteger-1;
  
end;

procedure Tfrm_OutlayPayout.tbDeleteClick(Sender: TObject);
begin
  if not PurviewSet('经费支出制单') then Exit;

  if not qryMain.Active then Exit;
  if qryMain.IsEmpty then
  begin
    MessageBoxWarning('没有可以删除的记录!');
    exit;
  end;
  if qryMain.FieldByName('iState').AsInteger>1 then Exit;//保存状态以上的单据不能修改
  //
  if MessageBoxQuery('确定要删除您选择的数据记录吗?')= IDYes then
  try
    qryDetail.First;
    while not qryDetail.Eof do qryDetail.Delete;
    qryMain.Delete;
  except
    MessageBoxError('删除数据时出错!');
  end;

⌨️ 快捷键说明

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