zoukankan      html  css  js  c++  java
  • cxGrid 显示行号及行号列列名

    cxGrid默认不显示行号,但是可以通过cxGrid1DBTableView1CustomDrawIndicatorCell事件来重绘行号

    选中cxGrid1DBTableView1,在OnCustomDrawIndicatorCell事件中,输入以下代码:

    1
    2
    3
    4
    5
    6
    procedure TForm1.cxGrid1DBTableView1CustomDrawIndicatorCell(
      Sender: TcxGridTableView; ACanvas: TcxCanvas;
      AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
    begin
      SetRowNumber(Sender, AviewInfo, ACanvas, ADone);//调用SetRowNumber函数,函数声明及实现见后
    end;

    SetRowNumber函数声明(注意函数声明的摆放位置,此处不在Form内):

    1
    2
    procedure SetRowNumber(var Sender: TcxGridTableView; var AViewInfo: TcxCustomGridIndicatorItemViewInfo;
      ACanvas: TcxCanvas; var ADone: boolean);

    SetRowNumber函数实现代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    procedure SetRowNumber(var Sender: TcxGridTableView; var AViewInfo: TcxCustomGridIndicatorItemViewInfo;
      ACanvas: TcxCanvas; var ADone: boolean);
    var
      AIndicatorViewInfo: TcxGridIndicatorRowItemViewInfo;
      ATextRect: TRect;
      AFont: TFont;
      AFontTextColor, AColor: TColor;
      procedure DrawIndicatorImage(ACanvas: TcxCanvas;
        const R: TRect; AKind: TcxIndicatorKind);
      var
        X, Y: Integer;
      begin
        if AKind = ikNone then Exit;
        X := (R.Left + R.Right - cxLookAndFeelPainters.cxIndicatorImages.Width);
        Y := (R.Top + R.Bottom - cxLookAndFeelPainters.cxIndicatorImages.Height) div 2;
        cxLookAndFeelPainters.cxIndicatorImages.Draw(ACanvas.Canvas, X, Y, Ord(AKind) - 1);
      end;
    begin
      try
        AFont := ACanvas.Font;
        AColor := clBtnFace;
        AFontTextColor := clWindowText;
        if (AViewInfo is TcxGridIndicatorHeaderItemViewInfo) then begin
          ATextRect := AViewInfo.Bounds;
          InflateRect(ATextRect, -1, -1);
          Sender.LookAndFeelPainter.DrawHeader(ACanvas, AViewInfo.Bounds,
            ATextRect, [], cxBordersAll, cxbsNormal, taCenter, TcxAlignmentVert.vaCenter,
            False, False, '序号', AFont, AFontTextColor, AColor);
          ADone := True;
        end;
        if not (AViewInfo is TcxGridIndicatorRowItemViewInfo) then
          Exit;
        ATextRect := AViewInfo.ContentBounds;
        AIndicatorViewInfo := AViewInfo as TcxGridIndicatorRowItemViewInfo;
        InflateRect(ATextRect, -1, -1);
        if Sender.DataController.RecordCount > 0 then begin
          if AIndicatorViewInfo.GridRecord.Selected then
            AFontTextColor := clRed
          else
            AFontTextColor := clWindowText;
        end;
        Sender.LookAndFeelPainter.DrawHeader(ACanvas, AViewInfo.ContentBounds,
          ATextRect, [], [bBottom, bLeft, bRight], cxbsNormal, taCenter, TcxAlignmentVert.vaCenter,
          False, False, IntToStr(AIndicatorViewInfo.GridRecord.Index + 1),
          AFont, AFontTextColor, AColor);
        ADone := True;
      except
      end;
      DrawIndicatorImage(ACanvas, ATextRect, AIndicatorViewInfo.IndicatorKind);
    end;

    最后将cxGrid1DBTableView1中的OptionView中的Indicator设为True, IndicatorWidth设为适合值即可。

    recommand

    cxgrid_indicator_preview

  • 相关阅读:
    剑指 Offer——13. 调整数组顺序使奇数位于偶数前面
    剑指 Offer——3. 从尾到头打印链表
    剑指 Offer——2. 替换空格
    剑指 Offer——1. 二维数组中的查找
    LeetCode 905. Sort Array By Parity 按奇偶校验排列数组
    LeetCode 448. Find All Numbers Disappeared in an Array找到所有数组中消失的元素
    SSH 代码笔记
    anaconda3安装caffe
    opencv多版本安装
    人脸文章与数据库
  • 原文地址:https://www.cnblogs.com/karkash/p/6607883.html
Copyright © 2011-2022 走看看