dxdbgrid使用集锦delphi.docx
- 文档编号:9140085
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:20
- 大小:25.04KB
dxdbgrid使用集锦delphi.docx
《dxdbgrid使用集锦delphi.docx》由会员分享,可在线阅读,更多相关《dxdbgrid使用集锦delphi.docx(20页珍藏版)》请在冰点文库上搜索。
dxdbgrid使用集锦delphi
dxDBGrid使用集锦[转贴2007-03-2617:
26:
15]
一、如何设定可以多列自动排序?
只能使用分组:
如按a1,a2,a3,a4排序
先按a1分组,再a2,再a3
然后设置a4的排列(升/降)
二、如何设定左边几列,不能滚动?
建立Band0,Band1
Band0的Fixed=tfLeft
Band1的Fixed=tfnone
设置要锁定的字段的BandIndex=0,其它为1
三、如何访问,显示字段的对象,控制其可视与不可视?
参看自带例程RunTimeCustomizing.dpr
四、既然不能用readonly,那我用edgoEditing属性对吗?
要想ReadOnly=True.我用edgoRowSelected=True;
-------------------------------------------------------------------------------
DXDBGRID有没有属性(如SORT等)可以实现:
点击DXDBGRID的
某个字段标题,就按这个标题排序?
如果有,怎么用?
呵呵。
楼上的。
你这样对待DXGRID 啊。
太痛苦了。
DXGRID 设计排序和统计的关键前提是先指定 DXGRID 的KEY FIELD字段 然后设置它的 edgoAnsi Sort属性 为TRUE 就可以了.随便点任意字段都可以排序,如果还需要显示合计的话。
需要将edgoLoadAllRecords 设置为 True.
不过需要注意 如果你做的是C/S编程,这意味着要从服务器上把所有符合条件的记录
全部取回本地
------------------------------------------------------------------------------
整理ExpressQuantumGrid控件心得如下:
针对TdxDBGrid仅仅设置一些属性,就可以到达很好的效果:
前提:
先设置DataSource、ADODataSet、以及TdxDBGrid的属性后,设置ADODataSet的Active=true;然后才能在TdxDBGrid中的鼠标右键->
column-> Add all Fields; 注意:
一定要设置TdxDBGrid控件的属性keyField、并设置OptionsDB中edgoLoadAllRecord=true 。
1、显示脚注栏:
设置属性showSummeryFooter=true即可。
2、显示某一列的汇总值(或总个数):
设置summaryFooterType,为cstSum(或cstAvg)、并设置summaryFormat,即可。
3、设置Filter:
在TdxDBGrid属性中Filter组中Active=true。
4、设置Sort:
在OptionsBehavior中设置 :
edgoAutoSort=true。
5、设置汉字提示:
在column中->SummaryFormat中输入样式,如:
(数量=0.00)
6、summary样式,一共分为三种:
(1)summary:
用于行的总体说明GroupNode类型。
(2)summaryFooter:
在整个Grid的底部footer处显示。
(3)summaryRowFooter:
在每个行的底部显示信息。
(行,是几条记录形成的小组)。
------------------------------------------------------------------------------
在DELPHI的标准控件中很容易的用
grid.columns.add就可以加如一个列,但在DX控件中却不支持。
WHY?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
/
来自:
sun77wind, 时间:
2002-1-31 15:
53:
00, ID:
898563
WHY?
不知道,反正他就是不支持。
我也在研究这个东东,怎么,交流交流?
来自:
sun77wind, 时间:
2002-2-1 11:
23:
00, ID:
900250
我找到了
dxDBGrid1.CreateColumn(TdxDBGridMaskColumn);//TdxDBGridMaskColumn,列类型
dxDBGrid1.Columns[4].FieldName :
= 'City';//4列索引,City字段名称
出现
来自:
glbboy, 时间:
2002-2-1 13:
15:
00, ID:
900595
我就顺道问问,怎么让汇总的列自动跟着前面输入的变化。
在keyup事件中,dbgShare.Fields[4].AsFloat:
=
dbgShare.Fields[1].AsFloat*
dbgShare.Fields[2].AsFloat*
dbgShare.Fields[3].AsFloat;
这样的话等输完它又变回去了,如果用Post先提交,那样的话整个输入又获得了焦点,继续输的时候又把输好的给覆盖了,总之很不爽,大家可以试试。
而在其他事件中,又不是实时变化。
来自:
sun77wind, 时间:
2002-2-1 16:
23:
00, ID:
901144
你怎么不用计算字段呢?
来自:
glbboy, 时间:
2002-2-1 18:
27:
00, ID:
901471
在DBGRID事件BeforeScroll、ColExit两个事件中都加如下代码实现了汇总。
qryShare.Edit;
qryShare.Fields[4].AsCurrency:
=qryShare.Fields[1].AsCurrency*
qryShare.Fields[2].AsCurrency*qryShare.Fields[3].AsCurrency;
qryShare.Post;
但有一点不好,就是对数据库操作太多了。
:
)
计算字段?
有这个数据类型吗?
说详细点OK!
最好是给具体简单一点的代码!
来自:
china_peng, 时间:
2002-2-1 18:
39:
00, ID:
901499
不瞒你说,我搞了一天,曾经发过帖子;
最后自己搞定了;
with DXDBGRID1.CreateColumn(TdxDBGridMaskColumn) as TdxDBGridMaskColumn do
begin
FieldName :
= ClientDataSet3.Fields[Ifieldcount].FieldName;
HeaderAlignment :
= taCenter;
Width :
= 90;
------------------------------------------------------------------------------
SaveToIni可以保存dxDBGrid的设置
------------------------------------------------------------------------------
寒松大侠说的对!
dxDbGrid + devPrintSystem 就可以了。
不改也可以打印!
1.安装上devPrintSystem 控件。
2.窗体上加入dxComponentPrinter控件,dxDBGrid控件。
双击devPrintSystem 。
加入一个dxComponentPrinter1Link,用来与dxdbgrid连接。
dxComponentPrinter.Preview用来预览。
Print用来打印。
注意要设置dxdbgrid的keyfield,不然没有数据显示出来的。
来自:
hjandy, 时间:
2002-6-3 15:
58:
00, ID:
1140738
To :
王寒松
请教关于dxDBGrid的下述两个问题
A:
怎样在DefaultFields=True正常打印
B:
若预设dxDBGrid的DefaultFields=False,怎样在运行时动态加入栏位或组以及打印
注:
(1)数据表(DataSource)连接TClientDataSet
(2)使用标题筛选Filter.Active=True
(3)加入TdxComponentPrinter并设置
若预设dxDBGrid的DefaultFields为True、edgoLoadAllRecords为True并加入KeyField值、设置上述
(1)、
(2)、(3)时,执行打印为空不能打印dxDbGrid内容
------------------------------------------------------------------------------
在使用中发现了一个问题:
有些时候,在grid中选中显示的数据(即光标定位的那一条记录)和数据源中当前的记录不匹配,而且出现这种情况随机的,应该和具体的属性设置没有关系。
看看哪位兄台也遇上过类似的问题,麻烦赐教!
来自:
luozi, 时间:
2002-1-30 17:
24:
00, ID:
895998
cjf说的是syncSelection属性吧,在dxdbgrid的optiondb下。
我以前的同事也遇到这个问题,不过如果不设KEYField属性好像就不会有这个问题了。
关注。
◎◎
来自:
fjnnz, 时间:
2002-1-31 11:
11:
00, ID:
897655
To luoji:
但是如果不设keyField,就不能使用LoadAllRecords属性,不使用LoadAllRecords属性,则排序,分组,筛选这些强大的功能都不能使用了,岂不是可惜的很?
我前天也出了这个问题,经过检查,发现是keyfield设置成了一个非唯一的字段造成的,把keyfield设置成唯一的字段就不会了,不一定是主码,只要是唯一就行了,随即出现不能locate估计是当locate的时候,找出来的是keyfield,所以就停留在第一个keyfield和locate相同的那一条记录中了
来自:
mjy97, 时间:
2002-2-6 12:
53:
00, ID:
910760
条件:
一、keyfield设置为唯一值字段
二、LoadAllRecords:
=True
------------------------------------------------------------------------------
我在dxDBGrid中,在dxDBGrid1DQPZH列中的ONValidate事件中,怎样取得我刚输入的值,
我用dxDBGrid1DQPZH.Field.OldValue或dxDBGrid1DQPZH.Field.NewValue,均取得没修改
以前的值。
这个事件确实有问题,我的解决办法是在dxDbGrid的OnEdited中编程,代码如下
新值:
dxDBGrid1.FocusedField.NewValue
旧值:
dxDBGrid1.FocusedField.OldValue
来自:
caodz, 时间:
2002-3-1 16:
06:
00, ID:
952000
在dxDBGrid1ChangeColumn事件中,写
X:
=dxDBGrid1DQPZH.Field.TEXT
------------------------------------------------------------------------------
dxDBGrid怎样用代码动态增加列,
搞定了
with dxDBGrid1.CreateColumn(TdxDBGridButtonColumn) as TdxDBGridButtonColumn do
begin
FieldName :
= 'NAME';
end;
------------------------------------------------------------------------------
dxdbGrid的状态栏中的汇总结果,当添加新的记录的时候,不能刷新
怎么办?
应该在那里再进行一次汇总调用?
将LoadAllRecord 设为true即可.
------------------------------------------------------------------------------
dxDBGrid的继承关系是:
TWinControl-->TCustomControl-->TCustomdxContainer -->TCustomdxTreeList-->TCustomdxDBTreeListControl
-->TCustomdxDBGrid-->TdxDBGrid
------------------------------------------------------------------------------
dxDBGrid如何固定某列不左右移动?
options下的egoColumnMoving设为false
------------------------------------------------------------------------------
如何知道当前DXDBGRID的行号和列号
列号和列名
我是说DXDBGRID不是DBGRID
来自:
萧月禾, 时间:
2002-5-22 14:
11:
00, ID:
1116753
dxDBGrid.FocusedNode.Index
dxDBGrid.FocusedColumn
来自:
小草, 时间:
2002-5-22 14:
30:
00, ID:
1116803
大哥请问如何为坐标为(2,3)行号和列号的DXDBGRID赋值?
来自:
萧月禾, 时间:
2002-5-22 14:
47:
00, ID:
1116846
DXDBGRID的内容是反映其关联的数据集的数据 取数据的话可以dxDBGrid.Items[2].Values[3] 但好象不能直接通过程序给它赋值(手工可以) 要用程序赋值只能对其数据集处理
给RecNo属性等于2的数据集的第2个字段赋
如在一个循环判断中
ADOTable1.First;
while not ADOTable1.Eof do
begin
if ADOTable1.RecNo = 2 then
ADOTable1['字段二'] :
= 'abc';
ADOTable1.Next;
end;
来自:
zhanzehua, 时间:
2002-5-22 15:
22:
00, ID:
1116923
ADOTable1.RecNo :
=2;{记录到第二行}
ADOTable1.Fields[2] :
=?
?
{修改第三列}
------------------------------------------------------------------------------
dxDBGrid如何知道现在在哪一列?
哪一个单元格?
DBGrid有SelectedIndex,dxDBGrid是何相关属性?
dxDBGrid1.FocusedColumn
------------------------------------------------------------------------------
dxDBGrid如何用回车键、代替Tab键来移动栏位
在form的keypress事件下添加如下代码就可以了:
if key=#13 then
if (activecontrol is tdbgrid ) then
begin
with tdbgrid(activecontrol) do
if selectedindex<(fieldcount-1) then
selectedindex:
=selectedindex+1
else
selectedindex:
=0;
end;
首先设置Form的KeyPreview属性为True
然后
在form的keypress事件下添加如下代码就可以了:
if key=#13 then
if (activecontrol is tdbgrid ) then
begin
with tdbgrid(activecontrol) do
if selectedindex<(fieldcount-1) then
selectedindex:
=selectedindex+1
else
begin
dbgrid1.DataSource.DataSet.Next ;
selectedindex:
=0;
end;
------------------------------------------------------------------------------
DxDBGrid的GroupPanel上面的英文[Drag a column header to group by that column]怎么可以改成中文?
源码包里有 RC 文件。
打开他。
翻译成中文。
然后brcc32 -r *.rc 然后把生成RES 文件放到DELPHI的LIB PATH 中路径里就可以了
------------------------------------------------------------------------------
就是在任何一个单元格是双击后就可以知道那个单元在哪一个column(列)中,以运行不同的代码。
以前用DBGRID,可以在DBGrid1CellClick中获取该信息,但在DXDBGRID中如何做呢?
而且我想要
双击时,不是单击的时候根据Index就可以取得Caption啊:
dxDBGrid1.FocusedNode.Strings[dxDBGrid1.FocusedColumn]
至于会不会变你试一下就行了,用上面的这句应该没有问题的。
------------------------------------------------------------------------------
dxDBgrid多选,遍历每条选中记录,将字段Name内容改为Str的内容
if InputQuery('刊物名称输入','请输入新的刊物名称:
',Str) then
with dxDBGrid1.DataSource.DataSet do
begin
for I:
=0 to dxDBGrid1.SelectedCount-1 do
begin
GoTobookmark(pointer(dxDBGrid1.SelectedRows[i]));
// Edit;
// FieldByName('Name').AsString :
= Str;
// Post;
end;
end;
到第二个循环的GoTobookmark(pointer(dxDBGrid1.SelectedRows[i]));就'List Index out of bounds
(1)'。
以前得我都看了,好像没有改记录内容的。
for I:
=0 to dxDBGrid1.SelectedCount-1 do
->for i :
= dxDBGrid1.SelectedCount - 1 downto 0 do
------------------------------------------------------------------------------
在DXDBGRID中,根据某字段的值而决定该行的颜色,类似DBGRID的DRAWDATACELL事件怎么写
第一个问在dxdbgrid中oncustomdrawcell事件写
if ASelected then afont.Color:
=clred; //选中的栏的字体设为红色
scheck:
=ANode.Values[dxDBGrid1status.Index]; //dxdbgrid1status为某一个指定字段
if not VarIsNull(scheck) then
if scheck = '1' then //这段为指定值的判定,如果为1把这一行定义为白颜色
AColor :
= clWhite
else
acolor:
=clInfoBk;
------------------------------------------------------------------------------
在DXDBGRID控件中,有过滤功能,很方便。
但现在却出现一问题,
如果我在程序中用过滤锁定一条记录后,如果重新关闭并激活数据源,
此时用QUERY.FIELDBYNAME('AAA').ASSTRING返回的结果不是激活数据源前的记录,
必须手工用鼠标指向其它行或列时才会返回光标指向的记录。
如何解决?
来自:
doud, 时间:
2001-3-30 14:
39:
00, ID:
486077
不明白?
你要返回关闭前的记录,在关闭前记往好了
来自:
simonlai, 时间:
2001-3-30 15:
57:
00, ID:
486180
首先你跟蹤看看﹐你關閉之前是不是鎖定就是你當前所要的記錄﹖
如果是把關鍵字段保存在一個變量里﹐然后用
很笨的方法﹐就是進行Talbe.locate('Field',變量,[]);
就可以找到關閉前所要的記錄﹗
来自:
暖风, 时间:
2001-3-30 16:
06:
00, ID:
486194
var
SavePlace:
TBookmark;
PrevValue:
Variant;
begin
with Table1 do
begin
{ get a bookmark so that we can return to the same record }
SavePlace :
= GetBookmark;
{ move to prior record}
FindPrior;
{ get the value }
PrevValue :
= Fields[0].Value;
{Move back to the bookmark}
GotoBookmark(S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- dxdbgrid 使用 集锦 delphi