列  

解决:

      <aColumn>.GroupIndex   :=   -1;  

      <aColumn>.Visible   :=   True;

****************************************************************************

39 保存修改到数据库

解决:

procedure   <aForm>.FormClose(Sender:   TObject;   var   Action:   TCloseAction);  

begin  

if   (<aGrid>.FocusedView <> nil)

and   (<aGrid>.FocusedView.DataController.EditState <> []) then  

          <aGrid>.FocusedView.DataController.Post;  

end;

****************************************************************************

40 设置内置右键菜单

解决:

内置右键菜单包括二个菜单:cxGridStdHeaderMenu,   TcxGridStdFooterMenu

[delphi] view
plain
copy

  1. uses   cxGridStdPopupMenu;
  2. procedure   TForm1.cxGridPopupMenu1Popup(ASenderMenu:   TComponent;
  3. AHitTest:   TcxCustomGridHitTest;   X,   Y:   Integer;   var   AllowPopup:   Boolean);
  4. begin
  5. if   ASenderMenu   is   TcxGridStdHeaderMenu   then
  6. TcxGridStdHeaderMenu(ASenderMenu).OnPopup   :=   StdHeaderMenuPopup;
  7. end;
  8. procedure   TForm1.StdHeaderMenuPopup(Sender:   TObject);
  9. var
  10. I:   Integer;
  11. begin
  12. with   TcxGridStdHeaderMenu(Sender).Items   do
  13. for   I   :=   0   to   Count   -   1   do
  14. if   Items[I].Caption   =   'Group   By   Box'   then
  15. begin
  16. Items[I].Enabled   :=   False;
  17. System.Break;
  18. end
  19. end;

****************************************************************************

41 得到选中记录的值

解决:

[delphi] view
plain
copy

  1. 1)   View.DataController.DataModeController.GridMode   =   False时
  2. RecIdx   :=   View.Controller.SelectedRecords[i].RecordIndex;
  3. ColIdx   :=   View.DataController.GetItemByFieldName(AFieldName).Index;
  4. OutputVal   :=   View.DataController.Values[RecIdx,   ColIdx];
  5. //RecID   :=   View.DataController.GetRecordId(RecIdx);
  6. //OutputVal   :=   ADataSet.Lookup(View.DataController.KeyFieldNames,   RecID,   AFieldName);
  7. 2)   View.DataController.DataModeController.GridMode   =   True时
  8. Bkm   :=   View.DataController.GetSelectedBookmark(ASelectedRecordIndex);
  9. if   ADataSet.BookmarkValid(TBookmark(Bkm))   then
  10. begin
  11. ADataSet.Bookmark   :=   TBookmark(Bkm);
  12. OutputVal   :=   ADataSet.FieldByName(AFieldName).Value;
  13. end;
  14. View.BeginUpdate;
  15. View.DataController.BeginLocate;
  16. try
  17. //   make   changes   here…
  18. finally
  19. View.DataController.EndLocate;
  20. View.EndUpdate;
  21. end;

****************************************************************************

42 在GridMode禁用内置的右键Footer菜单

解决:

uses   cxGridStdPopupMenu;  

   

procedure   cxGridPopupMenuOnPopup(...)  

begin  

      if   (ASenderMenu   is   TcxGridStdFooterMenu)   and  

              <GridView>.DataController.DataModeController.GridMode   then  

          AllowPopup   :=   False;  

end;

****************************************************************************

43 主从表任何时候只能展开一个组

解决:

[delphi] view
plain
copy

  1. procedure   TForm1.ADetailDataControllerCollapsin(  ADataController:  TcxCustomDataController;
  2. ARecordIndex:   Integer;  var   AAllow:   Boolean);
  3. var
  4. I:   Integer;
  5. C:   Integer;
  6. begin
  7. AAllow   :=   False;
  8. C   :=   0;
  9. for   I   :=   0   to   ADataController.RecordCount   -   1   do
  10. begin
  11. if   ADataController.GetDetailExpanding(I)   then
  12. Inc(C);
  13. if   C   >   1   then
  14. AAllow   :=   True;
  15. end;
  16. end;
  17. procedure   TForm1.ADetailDataControllerExpanding(
  18. ADataController:   TcxCustomDataController;   ARecordIndex:   Integer;
  19. var   AAllow:   Boolean);
  20. begin
  21. ADataController.CollapseDetails;
  22. end;
  23. procedure   TForm1.FormCreate(Sender:   TObject);
  24. begin        cxGrid1DBTableView1.DataController.OnDetailExpanding:=ADetailDataControllerExpanding;         cxGrid1DBTableView1.DataController.OnDetailCollapsing:=ADetailDataControllerCollapsing;
  25. end;
  26. ****************************************************************************
  27. 44 动态创建层次(Level)和视图(View)
  28. 解决:
  29. var
  30. Grid:   TcxGrid;
  31. Level:   TcxGridLevel;
  32. View:   TcxGridDBTableView;
  33. begin
  34. //   Creates   a   Grid   instance
  35. Grid   :=   TcxGrid.Create(SomeOwner);
  36. Grid.Parent   :=   SomeParent;
  37. //   Creates   a   Level
  38. Level   :=   Grid.Levels.Add;
  39. Level.Name   :=   'SomeLevelName';
  40. //   Creates   a   View
  41. View   :=   Grid.CreateView(TcxGridDBTableView)   as   TcxGridDBTableView;
  42. View.Name   :=   'SomeViewName';
  43. //   …   and   binds   it   to   the   Level
  44. Level.GridView   :=   View;
  45. //   Hooks   up   the   View   to   the   data
  46. View.DataController.DataSource   :=   SomeDataSource;
  47. //   …   and   creates   all   columns
  48. View.DataController.CreateAllItems;
  49. end;

****************************************************************************

45 获得Group   Footer合计行对应的记录

解决:

[delphi] view
plain
copy

  1. procedure   TForm1.cxGrid1DBTableView1CustomDrawFooterCell(
  2. Sender:   TcxGridTableView;   ACanvas:   TcxCanvas;
  3. AViewInfo:   TcxGridColumnHeaderViewInfo;   var   ADone:   Boolean);
  4. var
  5. ALevel,   ADataGroupIndex:   Integer;
  6. AGridRecord,   AGroupRecord:   TcxCustomGridRecord;
  7. begin
  8. if   AViewInfo   is   TcxGridRowFooterCellViewInfo   and    //   Row   footer
  9. (TcxGridDBColumn(AViewInfo.Column).DataBinding.FieldName   =   'Area')   then     //   Area   column
  10. begin
  11. AGridRecord:=   TcxGridRowFooterCellViewInfo(AViewInfo).GridRecord;
  12. ALevel:= TcxGridRowFooterCellViewInfo(AViewInfo).Container.GroupLevel;
  13. ADataGroupIndex:=Sender.DataController.Groups.DataGroupIndexByRowIndex[AGridRecord.Index];
  14. if   ADataGroupIndex   <>   -1   then
  15. begin
  16. AGroupRecord   :=   AGridRecord;
  17. while   AGroupRecord.Level   <>   ALevel   do
  18. AGroupRecord   :=   AGroupRecord.ParentRecord;
  19. AViewInfo.Text   :=   AGroupRecord.DisplayTexts[0];
  20. end;
  21. end;
  22. end;

****************************************************************************

46 访问过滤之后的记录

解决:

var  

      I:   Integer;  

begin  

      Memo1.Lines.Clear;  

      with   cxGrid1DBTableView1.DataController   do  

          for   I   :=   0   to   FilteredRecordCount   -   1   do  

              Memo1.Lines.Add(DisplayTexts[FilteredRecordIndex[I],   0]);  

end;

****************************************************************************

47 获得单元的Font

解决:

cxGrid1DBTableView1.ViewInfo.RecordsViewInfo.Items[1].GetCellViewInfoByItem(  

      cxGrid1DBTableView1Company).EditViewInfo.Font;

****************************************************************************

48 根据Level名称找到Level对象

解决:

[delphi] view
plain
copy

  1. function   GetLevelByName(AGrid:   TcxGrid;   ALevelName:   string):   TcxGridLevel;
  2. function   LoopThroughLevels(ALevel:   TcxGridLevel;   ALevelName:   string):   TcxGridLevel;
  3. var
  4. I:   Integer;
  5. begin
  6. Result   :=   nil;
  7. for   I   :=   0   to   ALevel.Count   -   1   do
  8. begin
  9. if   ALevel[I].Name   =   ALevelName   then
  10. begin
  11. Result   :=   ALevel[I];
  12. Exit;
  13. end;
  14. if   ALevel[I].Count   >   0   then
  15. begin
  16. Result   :=   LoopThroughLevels(ALevel[I],   ALevelName);
  17. if   Result   <>   nil   then
  18. Exit;
  19. end;
  20. end;
  21. end;
  22. var
  23. I:   Integer;
  24. begin
  25. Result   :=   nil;
  26. for   I   :=   0   to   AGrid.Levels.Count   -   1   do
  27. begin
  28. if   AGrid.Levels[I].Name   =   ALevelName   then
  29. begin
  30. Result   :=   AGrid.Levels[I];
  31. Exit;
  32. end;
  33. if   AGrid.Levels[I].Count   >   0   then
  34. begin
  35. Result   :=   LoopThroughLevels(AGrid.Levels[I],   ALevelName);
  36. if   Result   <>   nil   then
  37. Exit;
  38. end;
  39. end;
  40. end;

****************************************************************************

49 指定Filter   Builder打开/保存过滤文件的默认路径

解决:

uses  

      ...,   cxFilterControlDialog;  

   

procedure   TForm.GridView1FilterControlDialogShow(  

      Sender:   TObject);  

begin  

      TfmFilterControlDialog(Sender).OpenDialog.InitialDir   :=   'D:/'  

end;

Delphi CxGrid 汇总(3)的更多相关文章

  1. Delphi CxGrid 汇总(4)

    1.     CxGrid汇总功能 ① OptionsView-Footer设置为True,显示页脚   ② CxGrid的Summary选项卡定义要汇总的列和字段名及汇总方式,Footer选项卡定义 ...

  2. Delphi CxGrid 汇总(2)

    17. 怎样设计多表头的cxGrid? 解决:cxGrid可以解决如下的表头: --------------------------------- | 说明1 | 说明2 | ------------ ...

  3. delphi cxgrid 使用方法

    delphi cxgrid 使用方法1.绑定数据 方法 cxGrid1DBTableView1.DataController.DataSource:=DataSource12.去掉"Drag ...

  4. 关于Delphi cxGrid主从表中从表只能编辑第一条记录的问题

    在Delphi cxGrid主从表中从表只能编辑第一条记录,这个问题是由于设置主从关联字段错误造成的. 从表DBtableView2的keyfieldnames,DetailKeyFieldNames ...

  5. Delphi cxGrid使用汇总(一)

    1. 去掉cxGrid中台头的Box解决:在tableview1的ptionsview的groupbybox=false; 2.统计功能解决:(1) tableview1. tableview1的op ...

  6. Delphi cxGrid –--> RecordIndex out of Range

    delphi 导出数据时常常出现这样一个错误 < RecordIndex out of Range > 处理办法: 设定 cxGridDBTableView 的 GridModeBuffe ...

  7. Delphi - cxGrid颜色显示相关设置

    1:单元格的值满足某个条件时,该单元格所在整行颜色设置整行字体设置 选中cxGridDBTableView,单击F11调出属性配置面板,在Events中双击OnCustomDrawCell后双击编辑重 ...

  8. Delphi - cxGrid内容xlsx、xls、csv格式导出

    .xls格式导出,uses中添加cxGridExportLink 代码如下: function SaveToExcel(gridMain: TcxGrid; FileName: string): st ...

  9. Delphi - cxGrid设定合并单元格

    在cxGrid中选中需要合并的字段,单击F11调出属性控制面板,展开Options,设置CellMerging的Value为True.

随机推荐

  1. 日志挖掘Logmnr

    日志挖掘 9.1 日志中数据用途 所有对用户数据以及数据字典的改变全部被保存在联机日志中.当然nologging,insert/*+append+/情况比较特殊除外,因此归档日志可以用来做数据库的恢复 ...

  2. html+css源码之实现登录弹出框遮罩层效果

    在web开发中,很多网站都做了一些特别炫丽的效果,比如用户登录弹框遮罩层效果,本文章向大家介绍css如何实现登录弹出框遮罩层效果,需要的朋友可以参考一下本文章的源代码. html+css实现登录弹出框 ...

  3. 1738 - TWO NODES

    1738 - TWO NODES 时间限制: 10000 MS 内存限制: 65535 KB 问题描述 Suppose that G is an undirected graph, and the v ...

  4. The Ninth Hunan Collegiate Programming Contest (2013) Problem L

    Problem L Last Blood In many programming contests, special prizes are given to teams who solved a pa ...

  5. jmeter随笔(7)--查看请求响应,为空

    问题:查看请求响应,为空 解决办法: 1.在jmeter3.0版本上找到请求,在[Advanced]下勾选"从HTML文件获取所有内含的资源" 2.运行查看,结果如下

  6. 关于conversation generation的论文笔记

    对话模型此前的研究大致有三个方向:基于规则.基于信息检索.基于机器翻译.基于规则的对话系统,顾名思义,依赖于人们周密设计的规则,对话内容限制在特定领域下,实际应用如智能客服,智能场馆预定系统.基于信息 ...

  7. 菜鸟学四轴控制器之3:数字积分法DDA实现直线插补

    上一篇的逐点比较法显然是无法画一条有倾角的直线的.因为X轴和Y轴永远都不同步,也就是像打台球一样,你打一个,我打一个,如果我进了球,我再接着打一个. 也就是说,如果直线为45度,也是没有办法画出来的, ...

  8. 为知笔记 Markdown 新手指南

    为知笔记 Markdown 新手指南 http://www.wiz.cn/feature-markdown.html 时序图,流程图详细流程图语法 http://adrai.github.io/flo ...

  9. Android之Handler(异步消息处理)机制

    1. 概述 Handler . Looper .Message 这三者都与Android异步消息处理线程相关的概念.那么什么叫异步消息处理线程呢?异步消息处理线程启动后会进入一个无限的循环体之中,每循 ...

  10. 洛谷P1467 循环数 Runaround Numbers

    P1467 循环数 Runaround Numbers 89通过 233提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 循环数是 ...