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

📄 hrps016_1q.pas

📁 韩国的一个数据表控件2 很好用 支持D4-5 一共5个 Korea, a data table control
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -