dxDBGrid使用集锦(delphi).doc_第1页
dxDBGrid使用集锦(delphi).doc_第2页
dxDBGrid使用集锦(delphi).doc_第3页
dxDBGrid使用集锦(delphi).doc_第4页
dxDBGrid使用集锦(delphi).doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

dxDBGrid使用集锦 转贴 2007-03-26 17:26:15 一、如何设定可以多列自动排序?只能使用分组:如按a1,a2,a3,a4排序先按a1分组,再a2,再a3然后设置a4的排列(升/降)二、如何设定左边几列,不能滚动?建立Band0,Band1Band0的Fixed=tfLeftBand1的Fixed=tfnone设置要锁定的字段的BandIndex=0,其它为1三、如何访问,显示字段的对象,控制其可视与不可视?参看自带例程RunTimeCustomizing.dpr四、既然不能用readonly,那我用edgoEditing属性对吗?要想ReadOnly=True.我用edgoRowSelected=True;-DXDBGRID有没有属性(如SORT等)可以实现:点击DXDBGRID的某个字段标题,就按这个标题排序?如果有,怎么用?呵呵。楼上的。你这样对待DXGRID啊。太痛苦了。DXGRID设计排序和统计的关键前提是先指定DXGRID的KEYFIELD字段然后设置它的edgoAnsiSort属性为TRUE就可以了.随便点任意字段都可以排序,如果还需要显示合计的话。需要将edgoLoadAllRecords设置为True.不过需要注意如果你做的是C/S编程,这意味着要从服务器上把所有符合条件的记录全部取回本地-整理ExpressQuantumGrid控件心得如下:针对TdxDBGrid仅仅设置一些属性,就可以到达很好的效果:前提:先设置DataSource、ADODataSet、以及TdxDBGrid的属性后,设置ADODataSet的Activetrue;然后才能在TdxDBGrid中的鼠标右键column-AddallFields;注意:一定要设置TdxDBGrid控件的属性keyField、并设置OptionsDB中edgoLoadAllRecordtrue。1、显示脚注栏:设置属性showSummeryFootertrue即可。2、显示某一列的汇总值(或总个数):设置summaryFooterType,为cstSum(或cstAvg)、并设置summaryFormat,即可。3、设置Filter:在TdxDBGrid属性中Filter组中Activetrue。4、设置Sort:在OptionsBehavior中设置:edgoAutoSorttrue。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-3115:53:00,ID:898563WHY?不知道,反正他就是不支持。我也在研究这个东东,怎么,交流交流?来自:sun77wind,时间:2002-2-111:23:00,ID:900250我找到了dxDBGrid1.CreateColumn(TdxDBGridMaskColumn);/TdxDBGridMaskColumn,列类型dxDBGrid1.Columns4.FieldName:=City;/4列索引,City字段名称出现来自:glbboy,时间:2002-2-113:15:00,ID:900595我就顺道问问,怎么让汇总的列自动跟着前面输入的变化。在keyup事件中,dbgShare.Fields4.AsFloat:=dbgShare.Fields1.AsFloat*dbgShare.Fields2.AsFloat*dbgShare.Fields3.AsFloat;这样的话等输完它又变回去了,如果用Post先提交,那样的话整个输入又获得了焦点,继续输的时候又把输好的给覆盖了,总之很不爽,大家可以试试。而在其他事件中,又不是实时变化。来自:sun77wind,时间:2002-2-116:23:00,ID:901144你怎么不用计算字段呢?来自:glbboy,时间:2002-2-118:27:00,ID:901471在DBGRID事件BeforeScroll、ColExit两个事件中都加如下代码实现了汇总。qryShare.Edit;qryShare.Fields4.AsCurrency:=qryShare.Fields1.AsCurrency*qryShare.Fields2.AsCurrency*qryShare.Fields3.AsCurrency;qryShare.Post;但有一点不好,就是对数据库操作太多了。:)计算字段?有这个数据类型吗?说详细点OK!最好是给具体简单一点的代码!来自:china_peng,时间:2002-2-118:39:00,ID:901499不瞒你说,我搞了一天,曾经发过帖子;最后自己搞定了;withDXDBGRID1.CreateColumn(TdxDBGridMaskColumn)asTdxDBGridMaskColumndobeginFieldName:=ClientDataSet3.FieldsIfieldcount.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-315:58:00,ID:1140738To:王寒松请教关于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-3017:24:00,ID:895998cjf说的是syncSelection属性吧,在dxdbgrid的optiondb下。我以前的同事也遇到这个问题,不过如果不设KEYField属性好像就不会有这个问题了。关注。来自:fjnnz,时间:2002-1-3111:11:00,ID:897655Toluoji:但是如果不设keyField,就不能使用LoadAllRecords属性,不使用LoadAllRecords属性,则排序,分组,筛选这些强大的功能都不能使用了,岂不是可惜的很?我前天也出了这个问题,经过检查,发现是keyfield设置成了一个非唯一的字段造成的,把keyfield设置成唯一的字段就不会了,不一定是主码,只要是唯一就行了,随即出现不能locate估计是当locate的时候,找出来的是keyfield,所以就停留在第一个keyfield和locate相同的那一条记录中了来自:mjy97,时间:2002-2-612: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-116:06:00,ID:952000在dxDBGrid1ChangeColumn事件中,写X:=dxDBGrid1DQPZH.Field.TEXT-dxDBGrid怎样用代码动态增加列,搞定了withdxDBGrid1.CreateColumn(TdxDBGridButtonColumn)asTdxDBGridButtonColumndobeginFieldName:=NAME;end;-dxdbGrid的状态栏中的汇总结果,当添加新的记录的时候,不能刷新怎么办?应该在那里再进行一次汇总调用?将LoadAllRecord设为true即可.-dxDBGrid的继承关系是:TWinControl-TCustomControl-TCustomdxContainer-TCustomdxTreeList-TCustomdxDBTreeListControl-TCustomdxDBGrid-TdxDBGrid-dxDBGrid如何固定某列不左右移动?options下的egoColumnMoving设为false-如何知道当前DXDBGRID的行号和列号列号和列名我是说DXDBGRID不是DBGRID来自:萧月禾,时间:2002-5-2214:11:00,ID:1116753dxDBGrid.FocusedNode.IndexdxDBGrid.FocusedColumn来自:小草,时间:2002-5-2214:30:00,ID:1116803大哥请问如何为坐标为(2,3)行号和列号的DXDBGRID赋值?来自:萧月禾,时间:2002-5-2214:47:00,ID:1116846DXDBGRID的内容是反映其关联的数据集的数据取数据的话可以dxDBGrid.Items2.Values3但好象不能直接通过程序给它赋值(手工可以)要用程序赋值只能对其数据集处理给RecNo属性等于2的数据集的第2个字段赋如在一个循环判断中ADOTable1.First;whilenotADOTable1.EofdobeginifADOTable1.RecNo=2thenADOTable1字段二:=abc;ADOTable1.Next;end;来自:zhanzehua,时间:2002-5-2215:22:00,ID:1116923ADOTable1.RecNo:=2;记录到第二行ADOTable1.Fields2:=?修改第三列-dxDBGrid如何知道现在在哪一列?哪一个单元格?DBGrid有SelectedIndex,dxDBGrid是何相关属性?dxDBGrid1.FocusedColumn-dxDBGrid如何用回车键、代替Tab键来移动栏位在form的keypress事件下添加如下代码就可以了:ifkey=#13thenif(activecontrolistdbgrid)thenbeginwithtdbgrid(activecontrol)doifselectedindex(fieldcount-1)thenselectedindex:=selectedindex+1elseselectedindex:=0;end;首先设置Form的KeyPreview属性为True然后在form的keypress事件下添加如下代码就可以了:ifkey=#13thenif(activecontrolistdbgrid)thenbeginwithtdbgrid(activecontrol)doifselectedindexfori:=dxDBGrid1.SelectedCount-1downto0do-在DXDBGRID中,根据某字段的值而决定该行的颜色,类似DBGRID的DRAWDATACELL事件怎么写第一个问在dxdbgrid中oncustomdrawcell事件写ifASelectedthenafont.Color:=clred;/选中的栏的字体设为红色scheck:=ANode.ValuesdxDBGrid1status.Index;/dxdbgrid1status为某一个指定字段ifnotVarIsNull(scheck)thenifscheck=1then/这段为指定值的判定,如果为1把这一行定义为白颜色AColor:=clWhiteelseacolor:=clInfoBk;-在DXDBGRID控件中,有过滤功能,很方便。但现在却出现一问题,如果我在程序中用过滤锁定一条记录后,如果重新关闭并激活数据源,此时用QUERY.FIELDBYNAME(AAA).ASSTRING返回的结果不是激活数据源前的记录,必须手工用鼠标指向其它行或列时才会返回光标指向的记录。如何解决?来自:doud,时间:2001-3-3014:39:00,ID:486077不明白?你要返回关闭前的记录,在关闭前记往好了来自:simonlai,时间:2001-3-3015:57:00,ID:486180首先你跟蹤看看你關閉之前是不是鎖定就是你當前所要的記錄如果是把關鍵字段保存在一個變量里然后用很笨的方法就是進行Talbe.locate(Field,變量,);就可以找到關閉前所要的記錄来自:暖风,时间:2001-3-3016:06:00,ID:486194varSavePlace:TBookmark;PrevValue:Variant;beginwithTable1dobegingetabookmarksothatwecanreturntothesamerecordSavePlace:=GetBookmark;movetopriorrecordFindPrior;getthevaluePrevValue:=Fields0.Value;MovebacktothebookmarkGotoBookmark(SavePlace);SetthevalueFields0.Value:=PrevValue;FreethebookmarkFreeBookmark(SavePlace);end;end;ok!:)-用过dxDBGrid的大侠看过来,拖动字段分组后,怎样将指定的组中的全部行选中(积分:100,回复:3,阅读:42)分类:控件-使用(版主:amo,cAkk)来自:mytsin,时间:2001-6-714:09:00,ID:557591显示:小字体|大字体比如:a,90;a,91;a92;b,80;b85分组后成了a909192b8085我想将b组的数据选中。来自:wind_cloudy,时间:2001-6-714:42:00,ID:557645设置dxDbgrid的OptionsBehavior属性的edgoMultiSelect为true设置dxDbgrid的OptionsView属性的edgoRowSelect为true按住ctrl或shift键,用鼠标选择.-如何在DXDBGRID(DEVEXPRESS中的一个控件)中在列标题上出现排序的小箭头?来自:Slong,时间:2001-2-810:28:00,ID:451611TheExpressQuantumGridperformssortingautomaticallyiftheegoLoadAllRecordsandegoAutoSortoptions(optionsproperty)areactive.Ifyouwishtoincorporatemultiplecolumnsorting(availablewithegoLoadAllRecordssettoTrue),allyoumustdoistoactivatetheegoMultiSortoption(theOptionExproperty).YouhavetowriteyourowncodewithintheOnColumnClickeventtosorttheExpressQuantumGridifitisnotinLoadAllRecordsmode.Foradditionalinformation,seetheExpressQuantumGridObjectsandComponentsreference.以上是DXDBGRID的帮助中有关排序的说明,也就是有两中方法去实现你的目的:1.设置OptionsBehavior.egoLoadAllRecords和OptionsDB.egoAutoSort属性为True就可以,不过我试了一下,要指定KeyField属性的值才有效。2.在OnColumnClick事件中加入你的排序方法,以下是它的Demo中的代码:withTdxDBGrid(Sender)dobeginOldSorted:=Column.Sorted;if(GetAsyncKeyState(VK_SHIFT)=0)thenTdxDBGrid(Sender).ClearColumnsSorted;ifOldSorted=csUpthenColumn.Sorted:=csDownelseColumn.Sorted:=csUp;withTQuery(DataSource.DataSet)dobeginID:=FieldByName(ID).AsInteger;DisableControls;tryClose;SQLOrderSt:=;fori:=0toSortedColumnCount-1dobeginifSQLOrderStthenSQLOrderSt:=SQLOrderSt+,;SQLOrderSt:=SQLOrderSt+GetFieldName(SortedColumnsi);ifSortedColumnsi.Sorted=csDownthenSQLOrderSt:=SQLOrderSt+DESC;end;ifSQLOrderStthenSQLOrderSt:=ORDERBY+SQLOrderSt;SQL.StringsSQL.Count-1:=SQLOrderSt;Open;Locate(ID,ID,);finallyEnableControls;end;end;end;由此我们可看到它是用动态SQL语句重新ORDERBY记录了。-各位大侠帮帮忙!急需的,我用CreateColumn方法不行,怎么办?来自:hpretty,时间:2002-5-3110:00:00,ID:1134606这是我的源码,你自己看着改一下就可以的!procedureCreatedxGridColumn(dxGrid:TdxDBGrid);varI,J,K:integer;C:TdxDBTreeListColumnClass;lFieldInfo:TFieldDictInfo;daqLookup:TQuery;D:TdxDBGridPickColumn;sLookField,sSQL:String;lSQLParser:TSQLAnalysis;functionGetListColumnsClass(AField:TField;DataSet:TDataSet):TdxDBTreeListColumnClass;varlFieldInfo:TFieldDictInfo;lSQLParser:TSQLAnalysis;beginlSQLParser:=TSQLAnalysis.Create;lSQLParser.SQLString:=(DataSetasTQuery).SQL.Text;tryifAField.FieldKind=fkLookupthenResult:=TdxDBGridLookupColumnelsebeginifAField.FieldKind=fkDatathenbegincaseAField.DataTypeofftBoolean:Result:=TdxDBGridCheckColumn;ftDate,ftDateTime:Result:=TdxDBGridDateColumn;ftTime:Result:=TdxDBGridTimeColumn;ftCurrency:Result:=TdxDBGridCurrencyColumn;ftGraphic:Result:=TdxDBGridImageColumn;ftBytes,ftVarBytes,ftBlob,ftMemo,ftFmtMemo,ftParadoxOle,ftDBaseOle,ftTypedBinary:Result:=TdxDBGridBlobColumn;elselFieldInfo:=DBDictInfo.FindFieldDictInfo(AField.FieldName,lSQLParser.Froms);if(lFieldInfo.LookupTable)and(notAField.ReadOnly)thenResult:=TdxDBGridPickColumnelseResult:=TdxDBGridColumn;end;endelseResult:=TdxDBGridMaskColumn;end;finallylSQLParser.Free;end;end;beginifdxGrid.DataSource=nilthenExit;ifdxGrid.DataSource.DataSet.FieldCount1thenexit;ifdxGrid.KeyField=thendxGrid.KeyField:=dxGrid.DataSource.DataSet.Fields0.FieldName;forI:=0todxGrid.DataSource.DataSet.FieldCount-1dobeginifnotdxGrid.DataSource.DataSet.FieldsI.VisiblethenContinue;/显示MEMO字段,ModifiedbyXufeng/if(GetListColumnsClass(dxGrid.DataSource.DataSet.FieldsI,dxGrid.DataSource.DataSet)=TdxDBGridBlobColumn)thenContinue;C:=TdxDBTreeListColumnClass(GetListColumnsClass(dxGrid.DataSource.DataSet.FieldsI,dxGrid.DataSource.DataSet);ifCnilthenbeginwithdxGrid.CreateColumn(C)dobeginFieldName:=dxGrid.DataSource.DataSet.FieldsI.FieldN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论