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 + -
显示快捷键?