📄 cwa500_01.pas.svn-base
字号:
unit Cwa500_01;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Bas100_01, Db, Menus, ExtCtrls, ComCtrls, ToolWin, Grids,
StdCtrls, Mask, FR_DSet, DBCtrls, Buttons, wwdbdatetimepicker, dxExEdtr,
dxCntner, dxTL, dxDBCtrl, dxDBGrid, ActnList, ADODB, dxDBTLCl, dxGrClms,
dxEditor, dxEdLib, FR_ChBox, FR_DBSet, FR_Class;
type
TCwa500_01Form = class(TBas100_01Form)
CoolBar1: TCoolBar;
ToolBar2: TToolBar;
tlbFirst: TToolButton;
tlbPrior: TToolButton;
tlbNext: TToolButton;
tlbLast: TToolButton;
ToolButton1: TToolButton;
tlbInsert: TToolButton;
tlbUpdate: TToolButton;
tlbDelete: TToolButton;
ToolButton2: TToolButton;
tlbSave: TToolButton;
tlbCancel: TToolButton;
ToolButton3: TToolButton;
tlbLocate: TToolButton;
tlbPrint: TToolButton;
tlbCheck: TToolButton;
ToolButton4: TToolButton;
tlbExit: TToolButton;
Panel1: TPanel;
Image1: TImage;
PopupMenu1: TPopupMenu;
mmiPrint: TMenuItem;
mmiExport: TMenuItem;
dsCwa500: TDataSource;
lblYear: TLabel;
lblMonth: TLabel;
lblTypeName: TLabel;
cbYear: TComboBox;
cbMonth: TComboBox;
cbType: TComboBox;
tlbBatch: TToolButton;
ToolButton5: TToolButton;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
sbOk: TSpeedButton;
tlbQuick: TToolButton;
ActionList1: TActionList;
ActFirst: TAction;
ActPrior: TAction;
ActNext: TAction;
ActLast: TAction;
ActInsert: TAction;
ActUpdate: TAction;
ActDelete: TAction;
ActSave: TAction;
ActCancel: TAction;
ActRefresh: TAction;
ActLocate: TAction;
ActSearch: TAction;
ActPrint: TAction;
ActExport: TAction;
ActExit: TAction;
SaveDialog1: TSaveDialog;
qryCwa500: TADOQuery;
ScrollBox1: TScrollBox;
lblType: TLabel;
lblEmpID: TLabel;
lblDesc: TLabel;
lblDate: TLabel;
lblValue: TLabel;
lblUnit: TLabel;
lblReason: TLabel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
lblTime: TLabel;
edtDest: TDBEdit;
edtValue: TDBEdit;
edtUnit: TDBEdit;
edtTypeID: TEdit;
edtTypeName: TDBEdit;
edtEmpID: TEdit;
edtEmpName: TDBEdit;
dtpDate: TwwDBDateTimePicker;
edtReasonID: TEdit;
edtReasonName: TDBEdit;
tlbSearch: TToolButton;
ActCheck: TAction;
ActBatch: TAction;
ActQuick: TAction;
qryHrm150: TADOQuery;
qryHrm150H150_001: TAutoIncField;
qryHrm150H150_002: TStringField;
qryHrm150H150_003: TStringField;
qryCwa160: TADOQuery;
qryCwa160C160_001: TAutoIncField;
qryCwa160C160_002: TStringField;
qryCwa160C160_003: TStringField;
qryCwa150: TADOQuery;
tlbRefresh: TToolButton;
ScrollBox2: TScrollBox;
dxDBGrid1: TdxDBGrid;
pmGrid: TPopupMenu;
qryCwa150C150_001: TAutoIncField;
qryCwa150C150_002: TStringField;
qryCwa150C150_003: TStringField;
qryCwa150C150_004: TSmallintField;
qryCwa150C150_005: TSmallintField;
edtStartTime: TdxTimeEdit;
edtEndTime: TdxTimeEdit;
qryCwa500C500_001: TIntegerField;
qryCwa500C500_002: TIntegerField;
qryCwa500C500_003: TStringField;
qryCwa500C500_004: TIntegerField;
qryCwa500C500_005: TDateTimeField;
qryCwa500C500_006: TStringField;
qryCwa500C500_007: TStringField;
qryCwa500C500_008: TFloatField;
qryCwa500C500_009: TSmallintField;
qryCwa500C500_010: TBooleanField;
qryCwa500C150_002: TStringField;
qryCwa500C150_003: TStringField;
qryCwa500C160_002: TStringField;
qryCwa500C160_003: TStringField;
qryCwa500H150_002: TStringField;
qryCwa500H150_003: TStringField;
dxDBGrid1C150_002: TdxDBGridLookupColumn;
dxDBGrid1C150_003: TdxDBGridLookupColumn;
dxDBGrid1C160_002: TdxDBGridLookupColumn;
dxDBGrid1C160_003: TdxDBGridLookupColumn;
dxDBGrid1C500_003: TdxDBGridMaskColumn;
dxDBGrid1H150_002: TdxDBGridLookupColumn;
dxDBGrid1H150_003: TdxDBGridLookupColumn;
dxDBGrid1C500_005: TdxDBGridDateColumn;
dxDBGrid1C500_006: TdxDBGridMaskColumn;
dxDBGrid1C500_007: TdxDBGridMaskColumn;
dxDBGrid1C500_008: TdxDBGridMaskColumn;
dxDBGrid1C500_009: TdxDBGridMaskColumn;
dxDBGrid1C500_010: TdxDBGridCheckColumn;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure cbYearChange(Sender: TObject);
procedure ReportGetValue(const ParName: String;
var ParValue: Variant);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
procedure edtTypeIDExit(Sender: TObject);
procedure edtEmpIDExit(Sender: TObject);
procedure edtReasonIDExit(Sender: TObject);
procedure edtTypeIDKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edtEmpIDKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edtReasonIDKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure sbOkClick(Sender: TObject);
procedure cbMonthChange(Sender: TObject);
procedure cbTypeChange(Sender: TObject);
procedure ActFirstExecute(Sender: TObject);
procedure ActPriorExecute(Sender: TObject);
procedure ActNextExecute(Sender: TObject);
procedure ActLastExecute(Sender: TObject);
procedure ActInsertExecute(Sender: TObject);
procedure ActUpdateExecute(Sender: TObject);
procedure ActDeleteExecute(Sender: TObject);
procedure ActSaveExecute(Sender: TObject);
procedure ActCancelExecute(Sender: TObject);
procedure ActRefreshExecute(Sender: TObject);
procedure ActLocateExecute(Sender: TObject);
procedure ActSearchExecute(Sender: TObject);
procedure ActPrintExecute(Sender: TObject);
procedure ActExportExecute(Sender: TObject);
procedure ActCheckExecute(Sender: TObject);
procedure ActBatchExecute(Sender: TObject);
procedure ActQuickExecute(Sender: TObject);
procedure ActExitExecute(Sender: TObject);
procedure qryCwa500AfterScroll(DataSet: TDataSet);
procedure dxDBGrid1BackgroundDrawEvent(Sender: TObject;
ACanvas: TCanvas; ARect: TRect);
procedure qryCwa500C500_009GetText(Sender: TField; var Text: String;
DisplayText: Boolean);
private
ATypeNo:Integer;
AStartDate,AEndDate:TDateTime;
APeriod:Integer;
AUnit:array[0..5] of string;
procedure SetButtonState(AInsUpd:Boolean);
procedure SetInterface;
procedure MenuItemClick(Sender: TObject);
procedure CreatePopmeun(AGrid:TdxDBGrid);
{ Private declarations }
public
{ Public declarations }
end;
var
Cwa500_01Form: TCwa500_01Form;
implementation
uses HwSelData, CommFun, SYSDATA, Cwa500_02, Cwa500_03, Cwa500_04, Wait;
{$R *.DFM}
//自动计算时间
function GetTimes(AEmpNo:Integer;AStartDate,AEndDate:TDateTime;StartTime,EndTime:string):Double;
var
ATime:array[1..6] of string;
ATimeValue:array[1..6] of Integer;
APerod1,APerod2:Integer; //起始时间到A1时间段的数值 //结束时间到A1时间段的数值
begin
//取员工班别的时间
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select C120_004,C120_005,C120_006,C120_007,C120_008,C120_009 from CWA120');
SYSDM.qryQuery.SQL.Add(' where C120_001='+IntToStr(AEmpNo)+' and C120_003='+GetDateString(AStartDate));
SYSDM.qryQuery.Open;
ATime[1]:=SYSDM.qryQuery.FieldByName('C120_004').Value;
ATime[2]:=SYSDM.qryQuery.FieldByName('C120_005').Value;
ATime[3]:=SYSDM.qryQuery.FieldByName('C120_006').Value;
ATime[4]:=SYSDM.qryQuery.FieldByName('C120_007').Value;
ATime[5]:=SYSDM.qryQuery.FieldByName('C120_008').Value;
ATime[6]:=SYSDM.qryQuery.FieldByName('C120_009').Value;
ATimeValue[1]:=StrToInt(copy(ATime[1],1,2))*60+StrToInt(copy(ATime[1],4,2));
ATimeValue[2]:=StrToInt(copy(ATime[2],1,2))*60+StrToInt(copy(ATime[2],4,2));
ATimeValue[3]:=StrToInt(copy(ATime[3],1,2))*60+StrToInt(copy(ATime[3],4,2));
ATimeValue[4]:=StrToInt(copy(ATime[4],1,2))*60+StrToInt(copy(ATime[4],4,2));
ATimeValue[5]:=StrToInt(copy(ATime[5],1,2))*60+StrToInt(copy(ATime[5],4,2));
ATimeValue[6]:=StrToInt(copy(ATime[6],1,2))*60+StrToInt(copy(ATime[6],4,2));
if StartTime='' then
begin
if ATimeValue[1]<>0 then StartTime:=ATime[1]
else if ATimeValue[3]<>0 then StartTime:=ATime[3]
else if ATimeValue[5]<>0 then StartTime:=ATime[5];
end;
if EndTime='' then
begin
if ATimeValue[6]<>0 then EndTime:=ATime[6]
else if ATimeValue[4]<>0 then EndTime:=ATime[4]
else if ATimeValue[2]<>0 then EndTime:=ATime[2];
end;
//起始时间
if StartTime<=ATime[1] then
begin
StartTime:=ATime[1];
APerod1:=0;
end else
if StartTime<=ATime[2] then
begin
StartTime:=StartTime;
APerod1:=StrToInt(copy(StartTime,1,2))*60+StrToInt(copy(StartTime,4,2))-ATimeValue[1];
end else
if StartTime<=ATime[3] then
begin
StartTime:=ATime[3];
APerod1:=ATimeValue[2]-ATimeValue[1];
end else
if StartTime<=ATime[4] then
begin
StartTime:=StartTime;
APerod1:=StrToInt(copy(StartTime,1,2))*60+StrToInt(copy(StartTime,4,2))-ATimeValue[3]+ATimeValue[2]-ATimeValue[1]
end else
if StartTime<=ATime[5] then
begin
StartTime:=ATime[5];
APerod1:=ATimeValue[4]-ATimeValue[3]+ATimeValue[2]-ATimeValue[1];
end else
if StartTime<=ATime[6] then
begin
StartTime:=StartTime;
APerod1:=StrToInt(copy(StartTime,1,2))*60+StrToInt(copy(StartTime,4,2))-ATimeValue[5]+ATimeValue[4]-ATimeValue[3]+ATimeValue[2]-ATimeValue[1]
end else
begin
if ATimeValue[6]<>0 then StartTime:=ATime[6]
else if ATimeValue[4]<>0 then StartTime:=ATime[4]
else if ATimeValue[2]<>0 then StartTime:=ATime[2];
APerod1:=ATimeValue[2]-ATimeValue[1]+ATimeValue[4]-ATimeValue[3]+ATimeValue[6]-ATimeValue[5];
end;
//结束时间
if EndTime<=ATime[1] then
begin
EndTime:=ATime[1];
APerod2:=0;
end else
if EndTime<=ATime[2] then
begin
EndTime:=EndTime;
APerod2:=StrToInt(copy(EndTime,1,2))*60+StrToInt(copy(EndTime,4,2))-ATimeValue[1];
end else
if EndTime<=ATime[3] then
begin
EndTime:=ATime[3];
APerod2:=ATimeValue[2]-ATimeValue[1];
end else
if EndTime<=ATime[4] then
begin
EndTime:=EndTime;
APerod2:=StrToInt(copy(EndTime,1,2))*60+StrToInt(copy(EndTime,4,2))-ATimeValue[3]+ATimeValue[2]-ATimeValue[1];
end else
if EndTime<=ATime[5] then
begin
EndTime:=ATime[5];
APerod2:=ATimeValue[4]-ATimeValue[3]+ATimeValue[2]-ATimeValue[1];
end else
if EndTime<=ATime[6] then
begin
EndTime:=EndTime;
APerod2:=StrToInt(copy(EndTime,1,2))*60+StrToInt(copy(EndTime,4,2))-ATimeValue[5]+ATimeValue[4]-ATimeValue[3]+ATimeValue[2]-ATimeValue[1];
end else
begin
if ATimeValue[6]<>0 then EndTime:=ATime[6]
else if ATimeValue[4]<>0 then EndTime:=ATime[4]
else if ATimeValue[2]<>0 then EndTime:=ATime[2];
APerod2:=ATimeValue[2]-ATimeValue[1]+ATimeValue[4]-ATimeValue[3]+ATimeValue[6]-ATimeValue[5];
end;
Result:=APerod2-APerod1;
end;
//设置按钮状态
procedure TCwa500_01Form.SetButtonState(AInsUpd:Boolean);
begin
ActFirst.Enabled:=not AInsUpd;
ActPrior.Enabled:=not AInsUpd;
ActNext.Enabled:=not AInsUpd;
ActLast.Enabled:=not AInsUpd;
ActInsert.Enabled:=(ARights[2]='Y') and (not AInsUpd);
ActUpdate.Enabled:=(ARights[3]='Y') and (not AInsUpd);
ActDelete.Enabled:=(ARights[4]='Y') and (not AInsUpd);
ActSave.Enabled:=AInsUpd;
ActCancel.Enabled:=AInsUpd;
ActRefresh.Enabled:=not AInsUpd;
ActLocate.Enabled:=not AInsUpd;
ActSearch.Enabled:=not AInsUpd;
ActPrint.Enabled:=(ARights[5]='Y') and (not AInsUpd);
ActExport.Enabled:=(ARights[5]='Y') and (not AInsUpd);
ActCheck.Enabled:=(ARights[7]='Y') and (not AInsUpd);
ActBatch.Enabled:=(ARights[2]='Y') and (not AInsUpd);
ActQuick.Enabled:=(ARights[2]='Y') and (not AInsUpd);
ActExit.Enabled:=True;
ScrollBox1.Enabled:=AInsUpd;
Panel1.Enabled:=not AInsUpd;
if AInsUpd then PageControl1.ActivePageIndex:=1;
end;
procedure TCwa500_01Form.SetInterface;
begin
Image1.Picture.Bitmap.LoadFromResourceName(AImgHandle,'TOPTITL');
ActFirst.Caption:=GetDBString('COM00005001'); //最前
ActPrior.Caption:=GetDBString('COM00005002'); //上移
ActNext.Caption:=GetDBString('COM00005003'); //下移
ActLast.Caption:=GetDBString('COM00005004'); //最后
ActInsert.Caption:=GetDBString('COM00005005'); //新增
ActUpdate.Caption:=GetDBString('COM00005006'); //修改
ActDelete.Caption:=GetDBString('COM00005007'); //删除
ActSave.Caption:=GetDBString('COM00005008'); //保存
ActCancel.Caption:=GetDBString('COM00005009'); //取消
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -