精华内容
下载资源
问答
  • cxgrid
    2021-03-16 09:36:18

    1、cxgrid 如何动态创建列?

    var i: Integer;
      Column: TcxGridDBColumn;
      cxView: TcxGridDBTableView;  
    begin
      cxView := Self.Levels[0].GridView as TcxGridDBTableView;
      if cxView.DataController.DataSource <> nil then
        if cxView.DataController.DataSource.DataSet <> nil then
        begin
          cxView.ClearItems;
          for i:=0 to  cxView.DataController.DataSource.DataSet.FieldCount-1 do 
        	begin
             Column := cxView.CreateColumn;
             Column.DataBinding.FieldName := cxView.DataController.DataSource.DataSet.Fields[i].FieldName;
             Column.PropertiesClass := TcxTextEditProperties;
          end;
        end;
    end;
    for i := 0 to Query.FieldCount - 1 do   
    begin   
      cxGrid.CreateColumn;   
      cxGrid.columns[i].DataBinding.FieldName := Query.Fields[i].DisplayName;   
      cxGrid.Columns[i].Caption := 'XXXX';   
      cxGrid.Columns[i].Width   :=80;   
    end;

    2、cxgrid默认把“0.1”显示为“.1”,小数点前的0没有显示出来

    CxGrid 默认把 “0.1” 显示为 “.1” ,0没有显示出来。如何解决。

    方法1:

    properties属性中选择calcedit

    方法2:
    properties属性中选择CurrencyEdit 或maskedit等
    选择CurrencyEdit,   其displayformat设为: #.#;-,#.#  或0.#;-,0.#

    3、获取所选行的值

    for I := 0 to cxGridDBTableView1.Controller.selectedRowCount - 1 do
          begin
            cxGridDBTableView1.Controller.SelectedRows[i].Focused := True;
            ShowMessage(dsDevice.DataSet.FieldByName('id').AsString);
          end;

    4、选取行的第一列的值

    for I :=0 to cxGrid1DBTableView1.DataController.GetSelectedCount-1 do
    begin
      J:=cxGrid1DBTableView1.DataController.GetSelectedRowIndex(1);
      ShowMessage(VarToStr(cxGrid1DBTableView1.DataController.GetValue(J,0)));
    end;

     5、获取多选的值

    for   i   :=   0   to   cxgrid1.SelectedRows.Count-1   do
    begin 
     cxgrid1.DataSource.DataSet.GotoBookmark(Pointer(cxgrid1.SelectedRows.Items[i])); //定位选中的字段
    end;

    6、获取cxGrid排序规则

    const
       OrderArray: array[soNone..soDescending] of string = ('None', 'ASC', 'DESC');
    var
       I: integer;
       S, OrderStr: string;
    begin
       for I := 0 to gdtv1.SortedItemCount - 1 do begin
         if S <> '' then
           S := S + ', ';
         OrderStr := OrderStr + gdtv1.SortedItems[I].DataBinding.DefaultCaption + ' ';
         OrderStr := OrderStr + OrderArray[TcxDataSortOrder(gdtv1.SortedItems[I].SortOrder)];
         S := S + OrderStr;
       end;
       ShowMessage('ORDER BY ' + S);

    7、返回选中行数

    gdtv1.DataController.GetSelectedCount;

    8、返回选中行的索引

    gdtv1.DataController.GetSelectedRowIndex(0)表示第一个选中行的索引

    9、返回选中行的数据;

    var
       I, J:Integer;
    begin
       for I:=0 to gdtv1.DataController.GetSelectedCount - 1 do begin
         J := gdtv1.DataController.GetSelectedRowIndex(I);
         ShowMessage(VarToStr(gdtv1.DataController.GetValue(J, 0))); //选择中行的第列的值
       end;
    end;

    10、获取cxGrid排序规则

    const
       OrderArray: array[soNone..soDescending] of string = ('None', 'ASC', 'DESC');
    var
       I: integer;
       S, OrderStr: string;
    begin
       for I := 0 to gdtv1.SortedItemCount - 1 do begin
         if S <> '' then
           S := S + ', ';
         OrderStr := OrderStr + gdtv1.SortedItems[I].DataBinding.DefaultCaption + ' ';
         OrderStr := OrderStr + OrderArray[TcxDataSortOrder(gdtv1.SortedItems[I].SortOrder)];
         S := S + OrderStr;
       end;
       ShowMessage('ORDER BY ' + S);

    11、Delphi Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值

    cxGrid1DBTableView1.Controller.FocusedRowIndex 当前行号
    cxGrid1DBTableView1.Controller.FocusedRow 当前行
    cxGrid1DBTableView1.Controller.FocusedColumn 当前列
    cxGrid1DBTableView1.Controller.FocusedColumnIndex 当前列号
    cxGrid1DBTableView1.Controller.EditingItem 当前编辑中的单元框
    cxGrid1DBTableView1.Controller.EditingController.Edit 当前的编辑框
    在编辑状态下可以这样取当前单元格的值:
    if cxGrid1DBTableView1.Controller.FocusedColumn.Editing then
    ShowMessage(cxGrid1DBTableView1.Controller.EditingController.Edit.EditingValue)
    else
    cxGrid1DBTableView1.DataController.GetValue(cxGrid1DBTableView1.DataController.FocusedRecordIndex,
    cxGrid1DBTableView1.Controller.FocusedItemIndex);
    非编辑状态下可以这样取得单元格内的值:
    OnCellClick事件代码: 
    procedure   TForm1.cxGrid1DBTableView1CellClick( 
        Sender:   TcxCustomGridTableView; 
        ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; 
        AShift: TShiftState;   var   AHandled: Boolean); 
    var 
        v : Variant; 
    begin 
        v := ACellViewInfo.Value; 
    end;
    
    取列值
    i := cxGrid1DBBandedTableView1.Controller.FocusedColumn.Index;
    cxGrid1DBBandedTableView1.DataController.GetValue(cxGrid1DBBandedTableView1.Controller.SelectedRows[0].RecordIndex,i);
    cxGrid1DBTableView1.DataController.Values[行,列]
    取得焦点
    cxGrid1DBTableView1.Columns[5].FocusWithSelection;
    cxGrid1DBTableView1.Columns[4].Focused:=True;
    得到当前点击的单元格的值
    uses   Clipbrd;
    OnCellClick事件代码:
    procedure   TForm1.cxGrid1DBTableView1CellClick(
        Sender:   TcxCustomGridTableView;
        ACellViewInfo:   TcxGridTableDataCellViewInfo;   AButton:   TMouseButton;
        AShift:   TShiftState;   var   AHandled:   Boolean);
    var
        v   :   Variant;
    begin
        v   :=     ACellViewInfo.Value;//值
        Clipboard.AsText     :=     vartostr(v);//保存到clipboard
    end;

    12、cxGrid内容xlsx、xls、csv格式导出

    .xls格式导出,uses中添加cxGridExportLink

    代码如下:

    function SaveToExcel(gridMain: TcxGrid; FileName: string): string;
    var
        SaveFileDialog: TSaveDialog;
    begin
        //示例:SaveToExcel(dxDBGrid1,'默认文件名');
        SaveFileDialog := TSaveDialog.Create(nil);
        SaveFileDialog.FileName := FileName;
        SaveFileDialog.Filter := '*.xls';
        if SaveFileDialog.Execute then
        begin
            if pos('.XLS', UpperCase(SaveFileDialog.FileName)) <= 0 then
                SaveFileDialog.FileName := SaveFileDialog.FileName + '.XLS';
            ExportGridToExcel(SaveFileDialog.FileName, gridMain);
            ShowMessage('数据已成功导出到您指定的目录中');
        end;
        Result := SaveFileDialog.FileName;
        SaveFileDialog.Free;
    end;

    .csv格式导出,uses中添加cxGridExportLink

    代码如下:

    begin
        Screen.Cursor := crSQLWait;
        FileNameCache := FileName + FormatDateTime('YYYYMMDD', NOW);
        FileName := FileNameCache + '.CSV';
        FilePathCache := 'C:/TMP/' + FileNameCache;
        FilePath := FilePathCache + '.CSV';
        ExportGridToText(FilePathCache + '.XLS', cxGrid_M, True, True, ',', '', '', 'CSV');
        Screen.Cursor := crDefault;
    end;

    .xlsx格式无法通过cxGrid现有封装的方法实现,可以通过.xls/.csv格式转换成.xlsx格式。

    代码如下:

    procedure Saveto_xlsx(tn: string; fn: string);
    var
       ExcelApp, Excelbook, ExcelChart: OleVariant;
    //tn:需要转换格式的源文件路径
    //fn:转换之后的文件存储路径
    begin
       try
          ExcelApp := CreateOleObject('Excel.Application');
          ExcelApp.Visible := True;//False
          ExcelApp.Caption := '应用程序调用 Microsoft Excel';
          ExcelApp.Application.DisplayAlerts := False;
          ExcelApp.WorkBooks.Open(tn);
          ExcelApp.ActiveWorkbook.SaveAs(fn, 51);
          ExcelApp.Application.Quit;
          ExcelApp.Application.DisplayAlerts := True;
          Excelapp := Null;
       except
          Application.Messagebox('Excel 没有安装!', 'Hello', MB_ICONERROR + mb_Ok);
          Abort;
       end;
    end;

    13、GroupPanel上面的英文[Drag a column header to group by that column]怎么可以改成中文?
        解决:最简单的方法是 TcxGridTableView.OnCustomDrawPartBackground ,也可用 OnCustomDrawGroupCell:

    procedure TForm1.cxGrid1DBTableView1CustomDrawPartBackground(Sender: TcxGridTableView; ACanvas: TcxCanvas;AViewInfo: TcxCustomGridCellViewInfo; var ADone: Boolean);
    begin
      AViewInfo.Text:='动态设置 GroupBox 的显示内容';
      ACanvas.FillRect(AViewInfo.Bounds);
    end;
    注:改成中文后将字段拖上去中文还是会显示,最好是设置空值

    14、Delphi中关于DevExpress VCL汉化方法

    用法1:在工程中加入控件cxLocalizer;

    在程序中加入如下语句:

    Localizer.LoadFromFile(‘DevLocal.ini‘);

    Localizer.Language := '中文(简体,中国)';

    Localizer.Active := true;

    用法2:用DevExpress提供的工具cxLocalizerEditor打开这个ini文件,然后File->Build Resource File...;

    在工程中加入控件cxLocalizer;

    在程序中加入如下语句:

    {$R 语言文件.res}

    Localizer.LoadFromResource(HInstance);

    Localizer.Language := '中文(简体,中国)';

    Localizer.Active := true;

    用法2可将语言嵌入程序内部而不需要分发res文件
     

    更多相关内容
  • CxGrid动态创建录入表单,不关联DataSource。 CxGrid动态创建录入表单,不关联DataSource。
  • 该文档介绍如何使用Delphi第三方控件cxGrid实现颜色的不同显示方法,很实用。
  • DevExpress控件的cxGrid多行表头设置,网上搜索一下很多,多是太简单,我自己摸索后的笔记分享给大家,共同学习 。
  • Delphi 在cxgrid中进行数据统计,OrderBy操作演示,从数据库中读取出记录:  procedure TFrmOrderBy.BtnOrderClick(Sender: TObject);  var  item: TcxGridDBTableSummaryItem;  begin  item := ...
  • Delphi 判断cxGrid表格是否在filter状态:  procedure TFrmOrderBy.BtnOrderClick(Sender: TObject);  begin  ADODataSet1.Filtered := false;  ADODataSet1.Filter := 'dePartMent=''软件部''';  ADODataSet1....
  • cxgrid_FindPanel.7z

    2021-07-24 21:18:18
    Delphi 用cxgrid的FindPanel做数据表的过滤,并在本地保存过滤方案
  • CxGrid不关联数据源录入表单(动态创建).rar
  • devexpress的cxgrid.rar

    2020-09-06 13:17:47
    DevExpress控件的cxGrid多行表头设置,网上搜索一下很多,多是太简单,我自己摸索后的笔记分享给大家,共同学习 。
  • cxGrid的计算列

    2016-09-14 13:51:45
    cxGrid的计算列
  • delphi-cxGrid的使用

    2022-03-26 22:07:06
    delphi-cxGrid的使用
  • cxGrid多列模糊下拉过滤
  • cxGrid数据行移动

    2015-12-18 13:53:19
    代码已示例出cxGrid数据行是如何移动,即将整行记录上移或下移,功能完整,值得拥有。
  • cxGrid中cxLookupComboBox应用
  • CheckBox在cxGrid中的应用
  • 实现复杂的cxGrid多表头的例子,以及多表头下数据的填写与显示
  • 使用cxGrid有一些时间了,在这里总结一下使用cxGrid的一些方法,希望给刚开始接触cxGrid的人一些帮助。
  • DxAutoInstaller delphi7下安装DevExpressVCL.V41_cxgrid 实测 winxp win7 64位下 使用cxgrid delphi7 安装DevExpress VCL.V41 cxgrid ExpressQuantumGrid 6
  • cxgrid 单元格颜色控制

    2018-07-13 16:07:10
    cxgrid 单元格颜色控制。至于什么行的颜色控制,列的颜色控制,那都没有意义,大家都会,我就不做了。我只发布了单个单元格的颜色控制代码。简单实用,还带注释。菜鸟都能读懂的。不好你骂我。
  • 解决cxGrid单元格合并列重复统计问题以及非合并列按正常统计功能!(最近遇到cxGrid单元合并和统计问题,网上搜索没有得到完美解决,最后只能自己想办法了)
  • cxGrid6 For Delphi7源码版

    2019-04-27 01:15:07
    DevExpressVCL源码版。Delphi7和Delphi 2007测试OK, 其它版本没有测过;
  • delphi7 下 获取cxgrid主从表中从表的纪录数,经测试有效,作为刚接触cxrid编程的同事有很好的帮助
  • cxGrid向Excel导出单元颜色
  • cxGrid主从表Demo.rar

    2019-07-13 17:27:39
    cxGrid主从表Demo.rar
  • checkbox在cxGrid

    2017-11-11 11:47:44
    checkbox在cxGrid
  • 大致类型: cxGrid的几个例子、ini连接数据库、明日科技配套代码(文件上传下载)、 时间差相减(可参考Delphi函数里面的综合运用)、基本控件应用 cxGrid查找功能 cxGrid的列属性 cxGrid应用交流实例一_ok eg_Add...
  • cxGrid查找功能

    2017-02-06 09:13:19
    cxGrid查找功能
  • cxGrid与cxLookupComboBox多列模糊过滤
  • 添加cxGrid右键菜单

    2013-01-09 16:10:25
    仅适用于安装了源码版DevExpress...编译成功之后,添加cxGridPopupMenu控件,关联对应的cxGrid,编译运行程序,右键标题菜单即可看到添加的“Export Excel”菜单,同样,你也可以根据你的需求添加其它定制功能的菜单。
  • cxGrid封装到Dll动态库里,这个资源可以不仅让大家学习如何把一个控件封装到Dll动态库里,还学习到如何把一个窗体封装到Dll动态库里。当然这个例子仅供学习用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,073
精华内容 829
关键字:

cxgrid