zoukankan      html  css  js  c++  java
  • CxGrid的使用说明

    CxGrid的使用说明

     

    cxgrid分组自动展开
    cxgrdbtblvwGrid1DBTableView1.DataController.Groups.FullExpand

    cxgrid取得默认字段

    cxgrdbtblvwGrid1DBTableView1.ClearItems;
    cxgrdbtblvwGrid1DBTableView1.DataController.CreateAllItems;

     

    (1)动态设置显示格式
    procedure SetDisplayFormat(ACtrlData: TClientDataSet;
       TbView: TcxGridDBTableView);
    var
       i: integer;
    begin
       if ACtrlData.RecordCount <= 0 then Exit;
       try
         TbView.ClearItems;
         ACtrlData.First;
         for i := 0 to ACtrlData.RecordCount - 1 do
         begin
           if ACtrlData.FieldByName('SQBF_DisplayInGrid').AsString = '1' then //在表格中显示
           with TbView.CreateColumn do
           begin
             DataBinding.FieldName := ACtrlData.FieldByName('SQBF_FieldName').AsString;
             Caption := ACtrlData.FieldByName('SQBF_Caption').AsString; //字段中文标题
             Hint := ACtrlData.FieldByName('SQBF_Hint').AsString;
             Width := ACtrlData.FieldByName('SQBF_Width').AsInteger;
             HeaderAlignmentHorz := taCenter;
           end;
           ACtrlData.Next;
         end;
       except
         on E: Exception do
           SaveLog('设置显示格式时出错:' + E.Message);
       end;
    end;

    (2)显示行号
    procedure TFmQueryBase.cxDBViewMasterCustomDrawIndicatorCell(
       Sender: TcxGridTableView; ACanvas: TcxCanvas;
       AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
    var
       FValue: string;
       FBounds: TRect;
    begin
       FBounds := AViewInfo.Bounds;
       if (AViewInfo is TcxGridIndicatorRowItemViewInfo) then
       begin
         ACanvas.FillRect(FBounds);
         ACanvas.DrawComplexFrame(FBounds, clBlack, clBlack, [bBottom, bLeft, bRight], 1);
         FValue := IntToStr(TcxGridIndicatorRowItemViewInfo(AViewInfo).GridRecord.Index+1);
         InflateRect(FBounds, -3, -2); //Platform specific. May not work on Linux.
         ACanvas.Font.Color := clBlack;
         ACanvas.Brush.Style := bsClear;
         ACanvas.DrawText(FValue, FBounds, cxAlignCenter or cxAlignTop);
         ADone := True;
       end;
    end;
    (3)设置显示格式,我的项目要求先动态添加字段,这时不知道字段类型,所以设置DisplayFormat不方便,我还没有找到好方法。
    所以采用打开数据集后再设置:
    procedure TFmQueryBase.cdsMasterAfterOpen(DataSet: TDataSet);
    var
       i: Integer;
    begin
       for i := 0 to cxDBViewMaster.DataController.DataSet.FieldCount -1 do
       begin
         if cxDBViewMaster.DataController.DataSet.Fields[i] is TNumericField then
         begin
           if Pos('AMOUNT', UpperCase(cxDBViewMaster.DataController.DataSet.Fields[i].FieldName)) > 0 then
           begin
             TNumericField(cxDBViewMaster.DataController.DataSet.Fields[i]).DisplayFormat := '#,##0.000';
             Continue;
           end;
           if Pos('QUANTITY', UpperCase(cxDBViewMaster.DataController.DataSet.Fields[i].FieldName)) > 0 then
           begin
             TNumericField(cxDBViewMaster.DataController.DataSet.Fields[i]).DisplayFormat := '#,##0.000';
             Continue;
           end;
            if Pos('MONEY', UpperCase(cxDBViewMaster.DataController.DataSet.Fields[i].FieldName)) > 0 then
           begin
             TNumericField(cxDBViewMaster.DataController.DataSet.Fields[i]).DisplayFormat := '#,##0.00';
             Continue;
           end;
        end;
       end;
    end;

  • 相关阅读:
    Algorithm Gossip (48) 上三角、下三角、对称矩阵
    .Algorithm Gossip (47) 多维矩阵转一维矩阵
    Algorithm Gossip (46) 稀疏矩阵存储
    Algorithm Gossip (45) 费氏搜寻法
    Algorithm Gossip (44) 插补搜寻法
    Algorithm Gossip (43) 二分搜寻法
    Algorithm Gossip (42) 循序搜寻法(使用卫兵)
    Algorithm Gossip (41) 基数排序法
    Algorithm Gossip (40) 合并排序法
    AlgorithmGossip (39) 快速排序法 ( 三 )
  • 原文地址:https://www.cnblogs.com/karkash/p/3104224.html
Copyright © 2011-2022 走看看