📄 hrps016_1q.pas
字号:
unit HRPS016_1Q;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Qrctrls, QuickRpt, Db, DBTables, ExtCtrls;
Const
FONTSIZE = 7; // 迄飘狼 农扁...
AVH = 14; // 扼牢埃狼 埃拜.
PRNCOUNT = 11;
type
SumRecord = Record
GroupSum : Currency;
TotSum : Currency;
End;
TfHRPS016_1Q = class(TForm)
QuickRep1: TQuickRep;
ColumnHeaderBand1: TQRBand;
DetailBand1: TQRBand;
PageHeader: TQRBand;
Main_Title: TQRLabel;
QRShape2: TQRShape;
QRLabel1: TQRLabel;
Page1: TQRLabel;
Condition1: TQRLabel;
Condition2: TQRLabel;
QRLabel2: TQRLabel;
Condition3: TQRLabel;
Query: TQuery;
Table1: TTable;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
procedure QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
procedure PageHeaderBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
private
{ Private declarations }
public
Char_Width : Integer; // 臂磊狼 承捞.
Char_Height : Integer; // 臂磊狼 臭捞..
FrameWidth : Integer;
StartPosition : Integer; // 阿 何盒狼 免仿 困摹...
FieldNames : TStrings;
SumRec : Array Of SumRecord;
PrintLine : Integer;
GroupFlag : Boolean; // 弊缝狼 钦阑 免仿秦具 茄促搁..
SumFlag : Boolean; // 傈眉狼 郴侩阑 免仿秦具 茄促搁..
GroupPrnFlag : Boolean; // 弊缝狼 钦阑 免仿秦具 茄促搁..
SumPrnFlag : Boolean; // 傈眉狼 郴侩阑 免仿秦具 茄促搁..
OldGroupName,
GroupName : String;
groupCount : Integer; // 备辅捞 茄俺 免仿茄巴牢瘤 咯矾俺牢瘤 舅酒 杭扼备...
TotPageNum : Integer;
procedure CreateNameLabel(Band : TQRBand; X,Y,W,H : Integer; FontSize, Bold : Integer);
procedure ViewNameLable( Str : String; Flag : Boolean );
procedure CreateQRLabel(Band : TQRBand; X,Y,W,H : Integer; Cap : String; FontSize, Bold : Integer);
procedure FontWidth( Font : TFont ); Overload;
procedure FontWidth( Font : TFont; Caption : String ); Overload;
procedure CreateQrShape(Band : TQRBand; X,Y,W : Integer);
procedure CreateQRDBLabel( X,Y,W,H : Integer; Field : String; FontSize, Bold, Ag : Integer);
{ Public declarations }
end;
var
fHRPS016_1Q: TfHRPS016_1Q;
implementation
Uses UHRCM_DModule;
{$R *.DFM}
procedure TfHRPS016_1Q.CreateQRDBLabel(X, Y, W, H: Integer;
Field: String; FontSize, Bold, Ag{Alignment}: Integer);
begin
Y := Y - 1;
With TQrShape.Create( QuickRep1 ) do
Begin
Parent := DetailBand1;
Top := y;
Left := StartPosition + X;
Height := H;
Width := W;
Pen.Width := FrameWidth;
Shape := qrsRectangle;
End;
With TQRLabel.Create( QuickRep1 ) do
Begin
Parent := DetailBand1;
If Bold = 1 Then
Font.Style := Font.Style + [fsBold];
FontWidth( Font ); // Char_Width, Char_Height
AutoSize := False;
Top := y+( H - Char_Height ) div 2;
Width := W - 2 ;
Left := StartPosition + X;
Case ag of
0 : Alignment := taCenter;
1 : Alignment := taLeftJustify;
2 : Alignment := taRightJustify;
Else
Alignment := taLeftJustify;
End;
FieldNames.Add( Field );
SetLength( SumRec, FieldNames.Count );
Caption := Field;
If Field <> ' ' Then
Name := Field;
// DataField := Field;
// DataSet := Query;
Transparent := True;
End;
end;
procedure TfHRPS016_1Q.ViewNameLable( Str : String; Flag: Boolean);
begin
TQrShape( QuickRep1.FindComponent('SumShape') ).Enabled := Flag;
TQrLabel( QuickRep1.FindComponent('SumLabel') ).Enabled := Flag;
// TQrLabel( QuickRep1.FindComponent('SumLabel') ).Caption := OldGroupName;
TQrLabel( QuickRep1.FindComponent('SumLabel') ).Caption :=Str;
end;
procedure TfHRPS016_1Q.CreateNameLabel(Band: TQRBand; X, Y, W, H: Integer;
FontSize, Bold: Integer);
begin
Y := Y - 1;
With TQrShape.Create( QuickRep1 ) do
Begin
Parent := Band;
Top := y;
Left := X;
Height := H;
Width := W;
Pen.Width := FrameWidth;
Shape := qrsRectangle;
Brush.Color := ClYellow;
Name := 'SumShape';
Enabled := False;
End;
With TQrLabel.Create( QuickRep1 ) do
Begin
Parent := Band;
If Bold = 1 Then
Font.Style := Font.Style + [fsBold];
FontWidth( Font ); // Char_Width, Char_Height
AutoSize := False;
Top := y+( H - Char_Height ) div 2;
Width := W ;
Left := X;
Alignment := taCenter;
Color := CLYellow;
Transparent := True;
Name := 'SumLabel';
Enabled := False;
End;
end;
procedure TfHRPS016_1Q.CreateQRLabel(Band : TQRBand; X, Y, W, H: Integer; Cap: String;
FontSize, Bold: Integer);
begin
With TQrShape.Create( QuickRep1 ) do
Begin
Parent := Band;
Top := y;
Left := StartPosition + X;
Height := H;
Width := W;
Pen.Width := FrameWidth;
Shape := qrsRectangle;
Brush.Color := ClYellow;
End;
With TQrLabel.Create( QuickRep1 ) do
Begin
Parent := Band;
If Bold = 1 Then
Font.Style := Font.Style + [fsBold];
FontWidth( Font ); // Char_Width, Char_Height
AutoSize := False;
Top := y+( H - Char_Height ) div 2;
Width := W ;
Left := StartPosition + X;
Alignment := taCenter;
Caption := cap ; //inttostr(X)+'-'+inttostr(W);
Color := CLYellow;
Transparent := True;
End;
end;
procedure TfHRPS016_1Q.FontWidth( Font: TFont );
Var
TempCanvas : TCanvas;
begin
TempCanvas := TCanvas.Create;
TempCanvas.Handle := GetDc(0);
TempCanvas.Font := Font;
Char_Width := TempCanvas.TextWidth('W');
Char_Height := TempCanvas.TextHeight('W');
FreeAndNil( TempCanvas );
end;
procedure TfHRPS016_1Q.CreateQrShape(Band: TQRBand; X, Y, W: Integer);
begin
end;
procedure TfHRPS016_1Q.FontWidth(Font: TFont; Caption: String);
Var
TempCanvas : TCanvas;
begin
TempCanvas := TCanvas.Create;
TempCanvas.Handle := GetDc(0);
TempCanvas.Font := Font;
Char_Width := TempCanvas.TextWidth( Caption );
Char_Height := TempCanvas.TextHeight('W');
FreeAndNil( TempCanvas );
end;
procedure TfHRPS016_1Q.FormCreate(Sender: TObject);
Var
DIV_NUMBER, // 饭骇狼 荐...
ALREADY_COUNT1, // 阿 备缝付促 捞固 粮犁窍绰 Cell狼 肮荐...
ALREADY_COUNT2, // 阿 备缝付促 捞固 粮犁窍绰 Cell狼 肮荐...
AW, // a康开狼 傈眉 农扁
BW, // b康开狼 傈眉 农扁
CW, // b康开狼 傈眉 农扁
Tw, // 康荐牢 何盒阑 力寇茄 醚 康开
Dw, // 康荐牢 康开狼 傈眉 农扁
AVW,
II,
I,
Lv, // 饭骇....
LC, // 茄饭骇寸 肮荐
Type1_Count,
Type2_Count : Integer;
begin
FieldNames := TStringList.Create;
With Query do
begin
DIV_NUMBER := 3;
ALREADY_COUNT1 := 2;
ALREADY_COUNT2 := 2;
Close;
SQL.Clear;
SQL.Add( ' Select Count(*) C from JHPS002T ' );
SQL.Add( ' Where Use_YN = ''Y'' ' );
SQL.Add( ' And Pay_DED_TYPE = :Pay_DED_TYPE ' );
SQL.Add( ' Order by pay_item_Code ' );
ParamByName( 'Pay_Ded_Type').AsString := '1';
Open; // 阿 亲格狼 肮荐甫 备茄促. 老馆 鞭咯 亲格狼 肮荐
Type1_Count := ( FieldByName('C').AsInteger + ALREADY_COUNT1 ) div DIV_NUMBER;
if ( ( FieldByName('C').AsInteger + ALREADY_COUNT1 ) Div DIV_NUMBER - ( FieldByName('C').AsInteger + ALREADY_COUNT1 ) / DIV_NUMBER ) <> 0 Then
Type1_Count := Type1_Count + 1;
Close;
ParamByName( 'Pay_Ded_Type').AsString := '2';
Open; // 阿 亲格狼 肮荐甫 备茄促. 傍力 亲格狼 肮荐
Type2_Count := ( FieldByName('C').AsInteger + ALREADY_COUNT2 ) Div DIV_NUMBER;
if ( ( FieldByName('C').AsInteger + ALREADY_COUNT2 ) Div DIV_NUMBER - ( FieldByName('C').AsInteger + ALREADY_COUNT2 ) / DIV_NUMBER ) <> 0 Then
Type2_Count := Type2_Count + 1;
// Column Title狼 Height阑 沥茄促.
ColumnHeaderBand1.Height := AVH * 4 + 4;
DetailBand1.Height := AVH * 3;
// GroupFooterBand1.Height := AVH * 3;
// SummaryBand1.Height := AVH * 3;
// 牢利荤亲 何盒阑 汲沥
AW := 116; // 牢利 荤亲狼 承捞.
FrameWidth := 4;
StartPosition := 0;
CreateQRLabel(ColumnHeaderBand1, 1, 1, AW , AVH+4, '牢 利 荤 亲', 10,1);
FrameWidth := 2;
CreateQRLabel(ColumnHeaderBand1, 1, 5+AVH, AW div 2+1, AVH, '荤 锅', FONTSIZE ,0);
CreateQRDBLabel(1, 1, AW div 2+1, AVH, 'Emp_No', FONTSIZE ,0,0);
CreateQRLabel(ColumnHeaderBand1, aw div 2+1, 5+AVH, AW div 2,AVH, '己 疙', FONTSIZE,0);
CreateQRDBLabel(aw div 2+1, 1, AW div 2,AVH, 'Emp_Name', FONTSIZE,0,0);
CreateQRLabel(ColumnHeaderBand1, 1, 5+AVH*2, AW div 2+1,AVH, '涝 荤 老', FONTSIZE,0);
CreateQRDBLabel(1, 1+AVH, AW div 2+1,AVH, 'Enter_Date', FONTSIZE,0,0);
CreateQRLabel(ColumnHeaderBand1, aw div 2+1, 5+AVH*2, AW div 2, AVH,'流 鞭', FONTSIZE,0);
CreateQRDBLabel(aw div 2+1, 1+AVH, AW div 2, AVH,'Grade_Code', FONTSIZE,0,0);
CreateQRLabel(ColumnHeaderBand1, 1, 5+AVH*3, AW div 2+1,AVH, '免蓖汗绒硼', FONTSIZE,0);
CreateQRDBLabel(1, 1+AVH*2, AW div 2+1,AVH, 'Work_Name', FONTSIZE,0,0);
CreateQRLabel(ColumnHeaderBand1, aw div 2+1, 5+AVH*3, AW div 2,AVH, '何 辑', FONTSIZE,0);
CreateQRDBLabel(aw div 2+1, 1+AVH*2, AW div 2,AVH, 'Dept_Name', FONTSIZE,0,0);
DW := 22;
AVW := ( DetailBand1.Width - ( AW + DW ) ) Div ( Type2_Count + Type1_Count ) ;
DW := DW + ( DetailBand1.Width - ( AW + DW ) ) Mod ( Type2_Count + Type1_Count ) ;
//-------------------------------------------------------------------------//
Close;
SQL.Clear;
SQL.Add( ' Select * from JHPS002T ' );
SQL.Add( ' Where Use_YN = ''Y'' ' );
SQL.Add( ' And Pay_DED_TYPE = :Pay_DED_TYPE ' );
SQL.Add( ' Order by pay_item_Code ' );
ParamByName( 'Pay_Ded_Type').AsString := '1';
Open;
Lv := 0;
LC := 0;
II := 0;
FrameWidth := 4;
StartPosition := AW;
CreateQRLabel(ColumnHeaderBand1, 1
, 1
, AVW * Type1_Count
, AVH + 4
, '扁夯 鞭咯棺 力荐寸'
, FONTSIZE ,1);
FrameWidth := 2;
While not Query.Eof Do
Begin
If (Type1_Count) <= LC Then
begin
StartPosition := AW;
LC := 0;
Inc( LV );
End;
CreateQRLabel(ColumnHeaderBand1, 1+( AVW * LC )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -