来源
1. 去掉GroupBy栏
cxGrid1DBTableView1.OptionsView.GroupByBox:=False;
2. 在GRID footer 中加入sum(列)
cxGrid1DBTableView1.OptionsView.footer:=Ture;然后在cxGRid1的customize中的summary 的footer.add需要合计的列kind= skSum(这个是设计的方法,以后会增加代码方法)
3. 去掉cxgrid 中的过滤下拉箭头选择
cxGrid1DBTableView1.OptionsCustomize.ColumnFiltering:=Fasle;
4. 设置分组的统计项
方法1
a.cxGrid1DBTableView1.OptionsView.GroupFooters:=gfAlwaysVisible;
b.並設置需要求和的列,在summary.default for Groups 下add加入需要合计的字段,
column下显示fieldname 为统计字段,format为格式,kind为统计方法,position 为位子:spfooter 在分组的下面,spgroup 在分组的上面;
方法2
或用cxGridPopupMenu1,在運行時可對任意數字類型列求和,方法是只需設置cxGridPopupMenu1的屬性Grid為cxGrid1DBTableView1的cxGrid
5. cxGrid默认的数值格式带¥,怎么去掉?
雙擊Cxgrid,選擇column改變類型 options.properties.Memo(貌似有个money,我觉得应该用这个), 在displayformat中进行设置
6. 在网格最后一行的最后一格回车自动增加一条记录,并跳到新记录的第一格
cxGrid1DBTableView1.OptionsBehavior.FocusFirsCellOnNewRecord与GoToNextCellOnEnter为True,
FocusCellOnCycle设为True
7. 网格中通过Tab跳转
设置cxGrid1DBTableView1.OptionsBehavior.FocusCellOnTab:=True
8. 设置是否能够在网格中编辑数据
cxGrid1DBTableView1.OptionsData.Appending:=True,
Deleting为True,Editing为True
9. 设置是否能选中网格
cxGrid1DBTableView1.OptionsSelection.CellSelect:=True
10. 设置是否能够反选,
cxGrid1DBTableView1.OptionsSelection.InsertSelect:=True
11. 设置行高
cxGridDBTableView1.OptionsView.DataRowHeight
12. 改变字体
cxStyleRepository 双击它,在里面添加GridTableViewStyleSheetDevExpress
然后改变Style标签里面的cxStyle的字体就可以控制cxGrid的字体了
13. 有图片和MEMO的例子
拖入一个cxGrid1,Table1,DataSource1。 Table1的DatabaseName设为DBDEMOS,TableName设为biolife.db,
Active设为True; DataSource1的DataSet设为Table1;
cxGrid1DBTableView1的DataController中的DataSource设为DataSource1;
右击cxGrid1DBTableView1选择Create All Columns;
双击cxGrid1,在弹出的窗口中找到cxGrid1DBTableView1Notes和cxGrid1DBTableView1Graphic,将它们的Properties属性设为BlobEdit;运行看看结果。再将cxGrid1DBTableView1Graphic的Properties属性设为Image,再将Properties下的Stretch设为True, 将cxGrid1DBTableView1->optionsview->CellAutoHeight 设为True,看看结果。
15.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;
16. 如何实现如下功能:
+财务部
+原材料仓库
+成品库
+冲压车间
+软件开发部
这个是部门的名称,点击加号就可以将本部门的人员情况显示出来。
(这个我在考勤里已经实现,也可以是1个表的分组显示) 解决:其实这是一个主从表关系,
(1):填好主表的keyfieldnames
(2):填好从表的keyfieldnames
(3):填好从表的 detaikeyfieldNames与masterkeyfieldnames
(4): 从表的数据源一定要按与主表关联的字段排序 注:其它地方设置了主从表结构那样就显示不出来,比如设置了从表的Table或者Query的mastersource和asterfield就会不能显示数据!如果是两个cxGrid的主从关系,这样设置就很OK了。
17.类似PageControl显示
解决:增加一个Level,将cxGrid1->RootLevelOptions->DetailTabsPosition设为dtpTop(这是设置tab页标签,显示在哪里,这里设置显示在顶端),然后相应的设置cxGrid1Level1,和cxGrid1Level2的Caption值。
18.如何设定左边几列,不能滚动?
解决:使用DB Banded Table才可以实现,
在cxGrid1DBBandedTableView里建立Band0,Band1
Band0的Fixed=tfLeft
Band1的Fixed=tfnone
设置要锁定的字段的BandIndex=0,其它为1,就OK了。
19.怎样实现如EXCEL一样的,当前格=G14+G15+G16 这样的功能
解决:举一个简单的例子:
label1.Caption := cxGrid1DBTableView1.DataController.Values[2,3]+cxGrid1DBTableView2.DataController.Values[1, 1]+cxGrid1DBTableView3.DataController.Values[1, 1];
所以不同cxGrid1DBTableView中的数据都可以给当前格,这样就做到了EXCEL中的当前格=G14+G15+G16 类似的功能。
//我的方法,在OnGetDataText事件中,修改值,这里因为该列是计算列
procedure Ti_kq_balance_form.cxGrid2DBTableView1Column15GetDataText(
Sender: TcxCustomGridTableItem; ARecordIndex: Integer;
var AText: String);
begin
inherited;
AText:=FloatToStrF(1.5*VarToFloat(cxGrid2DBTableView1.DataController.GetValue(ARecordIndex,9))+
VarToFloat(cxGrid2DBTableView1.DataController.GetValue(ARecordIndex,10))*2+
VarToFloat(cxGrid2DBTableView1.DataController.GetValue(ARecordIndex,11))*3,ffGeneral,10,2);
if AText='0' then
AText:='';
end;
22.如何使满足条件的数据显示不同的颜色?