Delphi CxGrid 汇总(3)
列
解决:
<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
- uses cxGridStdPopupMenu;
- procedure TForm1.cxGridPopupMenu1Popup(ASenderMenu: TComponent;
- AHitTest: TcxCustomGridHitTest; X, Y: Integer; var AllowPopup: Boolean);
- begin
- if ASenderMenu is TcxGridStdHeaderMenu then
- TcxGridStdHeaderMenu(ASenderMenu).OnPopup := StdHeaderMenuPopup;
- end;
- procedure TForm1.StdHeaderMenuPopup(Sender: TObject);
- var
- I: Integer;
- begin
- with TcxGridStdHeaderMenu(Sender).Items do
- for I := 0 to Count - 1 do
- if Items[I].Caption = 'Group By Box' then
- begin
- Items[I].Enabled := False;
- System.Break;
- end
- end;
****************************************************************************
41 得到选中记录的值
解决:
- 1) View.DataController.DataModeController.GridMode = False时
- RecIdx := View.Controller.SelectedRecords[i].RecordIndex;
- ColIdx := View.DataController.GetItemByFieldName(AFieldName).Index;
- OutputVal := View.DataController.Values[RecIdx, ColIdx];
- //RecID := View.DataController.GetRecordId(RecIdx);
- //OutputVal := ADataSet.Lookup(View.DataController.KeyFieldNames, RecID, AFieldName);
- 2) View.DataController.DataModeController.GridMode = True时
- Bkm := View.DataController.GetSelectedBookmark(ASelectedRecordIndex);
- if ADataSet.BookmarkValid(TBookmark(Bkm)) then
- begin
- ADataSet.Bookmark := TBookmark(Bkm);
- OutputVal := ADataSet.FieldByName(AFieldName).Value;
- end;
- View.BeginUpdate;
- View.DataController.BeginLocate;
- try
- // make changes here…
- finally
- View.DataController.EndLocate;
- View.EndUpdate;
- end;
****************************************************************************
42 在GridMode禁用内置的右键Footer菜单
解决:
uses cxGridStdPopupMenu;
procedure cxGridPopupMenuOnPopup(...)
begin
if (ASenderMenu is TcxGridStdFooterMenu) and
<GridView>.DataController.DataModeController.GridMode then
AllowPopup := False;
end;
****************************************************************************
43 主从表任何时候只能展开一个组
解决:
- procedure TForm1.ADetailDataControllerCollapsin( ADataController: TcxCustomDataController;
- ARecordIndex: Integer; var AAllow: Boolean);
- var
- I: Integer;
- C: Integer;
- begin
- AAllow := False;
- C := 0;
- for I := 0 to ADataController.RecordCount - 1 do
- begin
- if ADataController.GetDetailExpanding(I) then
- Inc(C);
- if C > 1 then
- AAllow := True;
- end;
- end;
- procedure TForm1.ADetailDataControllerExpanding(
- ADataController: TcxCustomDataController; ARecordIndex: Integer;
- var AAllow: Boolean);
- begin
- ADataController.CollapseDetails;
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin cxGrid1DBTableView1.DataController.OnDetailExpanding:=ADetailDataControllerExpanding; cxGrid1DBTableView1.DataController.OnDetailCollapsing:=ADetailDataControllerCollapsing;
- end;
- ****************************************************************************
- 44 动态创建层次(Level)和视图(View)
- 解决:
- var
- Grid: TcxGrid;
- Level: TcxGridLevel;
- View: TcxGridDBTableView;
- begin
- // Creates a Grid instance
- Grid := TcxGrid.Create(SomeOwner);
- Grid.Parent := SomeParent;
- // Creates a Level
- Level := Grid.Levels.Add;
- Level.Name := 'SomeLevelName';
- // Creates a View
- View := Grid.CreateView(TcxGridDBTableView) as TcxGridDBTableView;
- View.Name := 'SomeViewName';
- // … and binds it to the Level
- Level.GridView := View;
- // Hooks up the View to the data
- View.DataController.DataSource := SomeDataSource;
- // … and creates all columns
- View.DataController.CreateAllItems;
- end;
****************************************************************************
45 获得Group Footer合计行对应的记录
解决:
- procedure TForm1.cxGrid1DBTableView1CustomDrawFooterCell(
- Sender: TcxGridTableView; ACanvas: TcxCanvas;
- AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
- var
- ALevel, ADataGroupIndex: Integer;
- AGridRecord, AGroupRecord: TcxCustomGridRecord;
- begin
- if AViewInfo is TcxGridRowFooterCellViewInfo and // Row footer
- (TcxGridDBColumn(AViewInfo.Column).DataBinding.FieldName = 'Area') then // Area column
- begin
- AGridRecord:= TcxGridRowFooterCellViewInfo(AViewInfo).GridRecord;
- ALevel:= TcxGridRowFooterCellViewInfo(AViewInfo).Container.GroupLevel;
- ADataGroupIndex:=Sender.DataController.Groups.DataGroupIndexByRowIndex[AGridRecord.Index];
- if ADataGroupIndex <> -1 then
- begin
- AGroupRecord := AGridRecord;
- while AGroupRecord.Level <> ALevel do
- AGroupRecord := AGroupRecord.ParentRecord;
- AViewInfo.Text := AGroupRecord.DisplayTexts[0];
- end;
- end;
- 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对象
解决:
- function GetLevelByName(AGrid: TcxGrid; ALevelName: string): TcxGridLevel;
- function LoopThroughLevels(ALevel: TcxGridLevel; ALevelName: string): TcxGridLevel;
- var
- I: Integer;
- begin
- Result := nil;
- for I := 0 to ALevel.Count - 1 do
- begin
- if ALevel[I].Name = ALevelName then
- begin
- Result := ALevel[I];
- Exit;
- end;
- if ALevel[I].Count > 0 then
- begin
- Result := LoopThroughLevels(ALevel[I], ALevelName);
- if Result <> nil then
- Exit;
- end;
- end;
- end;
- var
- I: Integer;
- begin
- Result := nil;
- for I := 0 to AGrid.Levels.Count - 1 do
- begin
- if AGrid.Levels[I].Name = ALevelName then
- begin
- Result := AGrid.Levels[I];
- Exit;
- end;
- if AGrid.Levels[I].Count > 0 then
- begin
- Result := LoopThroughLevels(AGrid.Levels[I], ALevelName);
- if Result <> nil then
- Exit;
- end;
- end;
- end;
****************************************************************************
49 指定Filter Builder打开/保存过滤文件的默认路径
解决:
uses
..., cxFilterControlDialog;
procedure TForm.GridView1FilterControlDialogShow(
Sender: TObject);
begin
TfmFilterControlDialog(Sender).OpenDialog.InitialDir := 'D:/'
end;
Delphi CxGrid 汇总(3)的更多相关文章
- Delphi CxGrid 汇总(4)
1. CxGrid汇总功能 ① OptionsView-Footer设置为True,显示页脚 ② CxGrid的Summary选项卡定义要汇总的列和字段名及汇总方式,Footer选项卡定义 ...
- Delphi CxGrid 汇总(2)
17. 怎样设计多表头的cxGrid? 解决:cxGrid可以解决如下的表头: --------------------------------- | 说明1 | 说明2 | ------------ ...
- delphi cxgrid 使用方法
delphi cxgrid 使用方法1.绑定数据 方法 cxGrid1DBTableView1.DataController.DataSource:=DataSource12.去掉"Drag ...
- 关于Delphi cxGrid主从表中从表只能编辑第一条记录的问题
在Delphi cxGrid主从表中从表只能编辑第一条记录,这个问题是由于设置主从关联字段错误造成的. 从表DBtableView2的keyfieldnames,DetailKeyFieldNames ...
- Delphi cxGrid使用汇总(一)
1. 去掉cxGrid中台头的Box解决:在tableview1的ptionsview的groupbybox=false; 2.统计功能解决:(1) tableview1. tableview1的op ...
- Delphi cxGrid –--> RecordIndex out of Range
delphi 导出数据时常常出现这样一个错误 < RecordIndex out of Range > 处理办法: 设定 cxGridDBTableView 的 GridModeBuffe ...
- Delphi - cxGrid颜色显示相关设置
1:单元格的值满足某个条件时,该单元格所在整行颜色设置整行字体设置 选中cxGridDBTableView,单击F11调出属性配置面板,在Events中双击OnCustomDrawCell后双击编辑重 ...
- Delphi - cxGrid内容xlsx、xls、csv格式导出
.xls格式导出,uses中添加cxGridExportLink 代码如下: function SaveToExcel(gridMain: TcxGrid; FileName: string): st ...
- Delphi - cxGrid设定合并单元格
在cxGrid中选中需要合并的字段,单击F11调出属性控制面板,展开Options,设置CellMerging的Value为True.
随机推荐
- mac下的几个命令-黑苹果之路
涉及一些文件操作的命令: 1.去掉/加上windows下文件的系统.只读.隐藏等属性,用chflags,nounchg/unchg,nohidden/hidden 2.去掉文件的@属性(这个属性经常导 ...
- (续篇3):飞测独家のJmeter秘籍,限量发放
好东西,分享大家,自上次分享出来fiddler导出jmx格式V4.0版本对外公开后,收到一些反馈,我们利用工作之余时间继续优化,现在一个比较稳定的版本出炉,分享给大伙,我们一起来看看. 特性说明: 版 ...
- 紧张:飞测独家のJmeter秘籍,限量发放
飞测说:数月前,小怪我牺牲了周末时间,做了fiddler的扩展开发,从fiddler将请求导出,保存为jmx格式的文件,然后使用jmeter来调用.随后,小怪和同事(心&阳)一同研究jmete ...
- (旧)子数涵数·PS——水杯抠图
一.首先老规矩,下载所需要的素材. 二.打开Photoshop,并打开已下载好的素材. 三.使用"钢笔工具",快捷键为P,采用"路径"模式,将水杯抠出(例图左上 ...
- 查看mysql 的物理存储路径
mysql> show global variables like "%datadir%";
- Eclipse User Library Add/Edit/Remove
1:前文 近来开发项目采用的技术是AngularJS+Bootstrap+Spring Boot+SpringMvc+JPA 的方式,创建的项目是 Java Project,对应的JAR文件需要添加到 ...
- jquery学习记录
1.选择器实例 语法 描述 $(this) 当前 HTML 元素 $("p") 所有 <p> 元素 $("p.intro") 所有 class=&q ...
- android Camera使用(一)
现在的App不可避免的要使用到手机的相机功能 首先我们先来介绍下最简单的一个实现方式,启动系统自带的Activity 上代码: public void openCamera() { Intent i= ...
- pycurl
http://www.cnblogs.com/lonelycatcher/archive/2012/02/09/2344005.html http://ju.outofmemory.cn/entry/ ...
- IE 下的z-index BUG问题
今天做项目的时候在IE7 碰到了IE 的 z-index 问题: 然后问了几个朋友,总结了一下z-index问题的几个要点: 1.z-index 是要在position为relative或者absol ...