1:cxgrid是应该数据关联的控件,类似dbgrid。
2:一般用来查阅表信息,如果要修改的话,直接在上面编辑或添加

非常不方便通常要放几个EDit来对选中的记录进行编辑或添加记录。

因为表一般都有主键,而用cxgrid很难控制。在post之前的主键检查工作。

3:由于没有直接进行编辑,而post之前又要进行主键检查工作(需要循环

adoquery,此时的记录索引已经改变了)。所以我们要用一个bookmack。在编辑

的时候先Getbookmack,在确认修改数据的时候,先GotoBookMark,再把值更新。

4:在选择某条记录后,需要得到相应的字段值显示在Edit上面,这个时候就要用

cxGridDBTableView的Cellclick事件里面处理;

可以用click事件里面的一个参数:ACellViewInfo。该参数的一个属性;

如:EdtMperson.text:=ACellViewInfo.GridRecord.Values[2];

5:当需要得到随即选择的多条记录时有两种办法

qrymast是一个adoquery

⑴第一步得到选择的总数

Icount:=cxGrid1DBTableView1.DataController.GetSelectedCount;

⑵循环所有所选择的记录

forn:=0toicount-1do

begin

⑶将选择记录的索引转换为数据集的索引

i:=cxGrid1DBTableView1.DataController.GetSelectedRowIndex(n);

如果cxgriddbtableview没有设置排序,那么第一种方法也是正确的(因为cxgriddbtableview显示

的数据和qrymast显示的数据顺序是一样的)

//这是第一种方法,取qrymast的数据

inc(i);//因为qrymast的记录是从1开始的

qryMast.RecNo:=i;

得到需要的数据值

listbox1.Items.Add(qrymast.fields[0].asstring);

//这是第二种方法,取cxGrid1DBTableView1.ViewData的数据

ifi=0then

cxGrid1DB.DataController.GotoFirst

else

cxGrid1DBTableView1.DataController.RecNo:=i;

str:=cxGrid1DBTableView1.ViewData.Rows[i].Values[0];

listbox1.Items.Add(str);

end;

(一次测试的时候,cxGrid1DBTableView1.DataController.RecNo:=0;语句会报错,

如果改为cxGrid1DB.DataController.GotoFirst,就没有问题)

6:当有时候用到ACellViewInfo.GridRecord.Values[2]时候,由于values[2]是一个变体

类型Variant,而如果这个时候相应的字段值如果为空,下面这样用就会报错。

EdtMperson.text:=ACellViewInfo.GridRecord.Values[2];

可以先判断一下:

ifACellViewInfo.GridRecord.Values[4]<>nullthen

MemRdesc.Lines.Text:=ACellViewInfo.GridRecord.Values[4];

========================================================================

使用cxGrid有一些时间了,在这里总结一下使用cxGrid的一些方法,希望给刚开始接触cxGrid的人一些帮助。

1.简单介
绍:cxGrid右下方的cxGrid1Level1是表示Grid表的层,cxGrid可以有多层,这相当于集合了PageControl的

功能,而
cxGrid1Level1右边的cxGrid1DBTableView1相当于DBGrid一样。右击cxGrid1可以添加
cxGrid1Level2,右

击cxGrid1Level2,可以选择Create View , Add level 或者Delete
Level。Add level可以增加子Level,Create

View里面可以选择很多不同总类的View。其中 1)DB Table可以和数据库连接的View,更一般的DBGrid类似,它比DBGrid多了比如鼠标中键可以用,可以统计,

查询,等等功能; 2)DB Banded Table 则可以实现比如: --------------------------------- | 说明1 | 说明2 | --------------------------------- | 字段1 | 字段2 | 字段3 | 字段4 |等类似的功能; 3)DB Card View 则提供了卡片方式的显示数据的功能,这个用在比如人事档案管理比较不错; 4)其它不一一赘述。2.一些使用方法: 1)有图片和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,看看结果。

2)如何让“Drag a column here to group by that column”不显示 解决:点击cxGrid1上的cxGrid1DBTableView1 在cxGrid1DBTableView1->optionsview->groupbybox:=false即可 注:OptionsView里面有很多属性可能经常要用,比如:ColumnAutoWith,Navigator等等,慢慢琢磨吧:) 3)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;

4)如何实现如下功能: +财务部 +原材料仓库 +成品库 +冲压车间 +软件开发部 这个是部门的名称,点击加号就可以将本部门的人员情况显示出来。 解决:其实这是一个主从表关系,1:填好主表的keyfieldnames 2:填好从表的keyfieldnames 3:填好从表的 detaikeyfieldNames与masterkeyfieldnames 4: 从表的数据源一定要按与主表关联的字段排序 注:其它地方设置了主从表结构那样就显示不出来,比如设置了从表的Table或者Query的mastersource和 asterfield就会不能显示数据!如果是两个cxGrid的主从关系,这样设置就很OK了。

5)统计功能 解决:cxGrid1DBTableView1->optionsview->Footer 设为True cxGrid1DBTableView1->DataController->Summary设置FooterSummaryItems即可

6)类似PageControl显示 解决:增加一个Level,将cxGrid1->RootLevelOptions->DetailTabsPosition设为dtpTop,然后相应的设

置cxGrid1Level1,和cxGrid1Level2的Caption值。

2003-10-30 20:55:11 问题7,8,9 7)如何设定左边几列,不能滚动? 解决:使用DB Banded Table才可以实现, 在cxGrid1DBBandedTableView里建立Band0,Band1 Band0的Fixed=tfLeft Band1的Fixed=tfnone 设置要锁定的字段的BandIndex=0,其它为1,就OK了。 8)怎样实现如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

类似的功能。9)鼠标右击cxGrid1DBBandedTableView1菜单里的Edit Layout什么用,怎么使用? 解决:可以拖动字段,并列的可以拖成有层次感(一层层), 拖动时会显示箭头的,就是说可以拖一个字段放

到最上面,就可以使记录按此字段进行分组。点击其中一个字段,上面还会出现一个上升或者下降的小三角形,这个

小三角形的作用是在运行阶段,数据就会按照这个字段上升或者下降排序。 还有一个Set as Default的作用是保持当前TableView的参数,下此产生新的TableView的时候就会可以和

上次保持的参数一样。这个还没有做过试验。

2003-11-2 21:45:37 问题1010)怎样将cxGrid里的数据导入到EXCEL,HTML,XML和TEXT 解决:这个问题在用了cxGrid以后变得异常简单,usescxExportGrid4Link;

procedure TForm1.Button1Click(Sender: TObject);beginExportGrid4ToEXCEL('d:/wang.xsl',cxGrid1,True,True);ExportGrid4ToTEXT('d:/wang.txt',cxGrid1,True,True);ExportGrid4ToXML('d:/wang.xml',cxGrid1,True,True);ExportGrid4ToHTML('d:/wang.html',cxGrid1,True,True);end;

2003-11-2 21:54:10 问题1111)如何使满足条件的数据显示不同的颜色?解决:varAYellowStyle: TcxStyle;

procedure TForm1.FormCreate(Sender: TObject);begin//行颜色AYellowStyle := TcxStyle.Create(Self);AYellowStyle.Color := $0080FFFF;AYellowStyle.TextColor := clMaroon;end;

procedure TForm1.cxGrid1DBBandedTableView1StylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);beginif ARecord.Values[cxGrid1DBBandedTableView1Lengthcm.Index] < 81 then AStyle := AYellowStyle;end;

这里cxGrid1DBBandedTableView1Lengthcm.Index小于81时就显示***

2003-11-2 21:59:39 问题1212)如何从外边的TXT文件导入到cxGrid?解决: procedure CustomizeColumns; procedure LoadData;

procedure TForm1.CustomizeColumns;constcDistance = 1;cRadius = 5;cPeriod = 4;cPstring = 0;varI: Integer;beginDecimalSeparator := '.';with cxGrid1TableView2 dofor I := 0 to ColumnCount - 1 do if I in [cDistance, cRadius] then Columns[I].DataBinding.ValueTypeClass := TcxIntegerValueType//1,5列为Integer else if I in [cPstring,cPeriod] then Columns[I].DataBinding.ValueTypeClass := TcxStringValueType//0,4列为String else Columns[I].DataBinding.ValueTypeClass := TcxFloatValueType;//其他为Floatend;

procedure TForm1.LoadData;constAFileName = '资产负债表.txt';AHeaderLineCount = 2;

varARecords, AValues: TStringList;I: Integer;

procedure InitRecord(const Str: string);var J: Integer; V: Variant;begin AValues.CommaText := Str; for J := 0 to AValues.Count - 1 do if AValues.Strings[J] <> '-' then begin V := AValues.Strings[J]; if not VarIsNull(V) then cxGrid1TableView2.DataController.Values[I, J] := V; end;end;

beginif not FileExists(AFileName) then raise Exception.Create('Data file not found');

ARecords := TStringList.Create;AValues := TStringList.Create;

with ARecords dotry LoadFromFile(AFileName); cxGrid1TableView2.BeginUpdate; cxGrid1TableView2.DataController.RecordCount := Count - AHeaderLineCount; for I := 0 to Count - (AHeaderLineCount + 1) do InitRecord(Strings[I + AHeaderLineCount]);finally cxGrid1TableView2.EndUpdate; ARecords.Free; AValues.Free;end;end;

procedure TForm1.FormCreate(Sender: TObject);beginCustomizeColumns;LoadData_Zcfz;end;

2003-11-3 13:18:58 附件其中“资产负债表.txt”中的数据如下:

资 产 行次 年 初 数 期 末 数 负债及所有者权益 行次 年 初 数 期 末 数--------- ---- ----- -------- ---------- ---- -------- ---------流动资产: 1 0.00 0.00 流动负债: 2 0.00 0.00

2003-11-3 20:09:25 问题1313)如何改变列的颜色?varAFirstColumnStyle: TcxStyle;

procedure TForm1.FormCreate(Sender: TObject);begin//列颜色AFirstColumnStyle := TcxStyle.Create(Self);AFirstColumnStyle.Color := clAqua;AFirstColumnStyle.TextColor := clBlue;cxGrid1TableView1.Columns[1].Styles.Content := AFirstColumnStyle;end;

2003-11-3 20:46:42 问题1414)Set as default的用法?解决:Set as default的用法是为了解决设置参数的方便而做的,比如:
连好数据库以后,更改cxGrid1DBBandedTableView1->OptionsCustomize->
ColumnFiltering

设为False。(这个设置可以将字段名的下拉单给去掉)更改cxGrid1DBBandedTableView1->OptionsView-
>

Navigator 设置为True。然后右击cxGrid1DBBandedTableView1,在弹出的菜单栏里面点击Set as
default。 OK,下次你再产生一个新的cxGrid1DBBandedTableView1时这些设置和刚才的一样了。如果需要设置的参数

很多的时候,这个Set as default很有用!

2003-11-3 20:58:27 问题1515)怎样使鼠标移动时,相应的单元里的文字变色? 解决:varFTrackItem: TcxCustomGridTableItem;FTrackRec: TcxCustomGridRecord;

procedure TForm1.cxGrid1DBTableView1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);beginif (AViewInfo.GridRecord = FTrackRec) and (AViewInfo.Item = FTrackItem) thenbegin ACanvas.Font.Color := clred; //红色字体 ACanvas.Font.Style := [fsUnderline];//带下划线end;end;

procedure TForm1.cxGrid1DBTableView1MouseMove(Sender: TObject;Shift: TShiftState; X, Y: Integer);varAHitTest: TcxCustomGridHitTest;ATrackItem: TcxCustomGridTableItem;ATrackRec: TcxCustomGridRecord;beginATrackItem := FTrackItem;ATrackRec := FTrackRec;

AHitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y);if AHitTest is TcxGridRecordCellHitTest thenbegin FTrackItem := TcxGridRecordCellHitTest(AHitTest).Item; FTrackRec := TcxGridRecordCellHitTest(AHitTest).GridRecord;endelsebegin FTrackItem := nil; FTrackRec := nil;end;

if (ATrackItem <> FTrackItem) or (ATrackRec <> FTrackRec) thenbegin // Invalidate old cell if ATrackRec <> nil then ATrackRec.Invalidate(ATrackItem); // Invalidate new cell if FTrackRec <> nil then FTrackRec.Invalidate(FTrackItem);end;end;

2003-11-5 11:26:19 问题1616)ExpressQuantumGrid 3.2.2中的dxdbgrid和4.2版本中的cxgrid有什么区别?有很大的区别,基本上相当于是两个控件一样。cxgrid是在dxdbgrid基础上完全重写的,所以cxgrid不支持dxdbgrid所以cxgrid里面特意提供了一个将dxdbgrid导入到cxgrid的功能。

2003-11-5 16:31:07 问题1717)怎样设计多表头的cxGrid? 解决:cxGrid可以解决如下的表头: --------------------------------- | 说明1 | 说明2 | --------------------------------- | 字段1 | 字段2 | 字段3 | 字段4 | | 字段5 | 字段6 | | 字段7 | 字段8 | 字段9 |实现这个很简单,你可以直接在上面拖动字段名,拖动时会显示箭头的,放入你想显示的位置就OK了。或者在鼠标右击cxGrid1DBBandedTableView1菜单里的Edit Layout里也可以拖放。

但是cxGrid不能实现如下的多表头形式: --------------------------------- | 说明1 | 说明2 | --------------------------------- | 说明3 | 说明4 | 说明5 | 说明6 | | 字段1 | 字段2 | | 字段3 | 字段4 | 字段5 |不知道有谁能实现这样的多表头?

2003-11-5 21:51:02 问题1818)在主从表结构时,当点开“+”时怎样将焦点聚在相应主表的记录上?解决:var HitTest: TcxCustomGridHitTest;

procedure TColumnsShareDemoMainForm.tvProjectsMouseDown(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin// Note that the Sender parameter is a SiteHitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y);// The point belongs to the [+]/[-] button areaif HitTest is TcxGridExpandButtonHitTest then // Move focus to the record TcxGridExpandButtonHitTest(HitTest).GridRecord.Focused := True;end;

2003-11-17 14:16:25 问题1919)CXGrid4如何展开全部节点解决:GridDBTableView1.DataController.Groups.FullExpand;

2003-12-12 17:07:30 问题2020)cxGrid如何动态创建Items的Editor的项? cxGrid的列有一个属性,它的编辑框可以指定combobox,spinedit等.在设计时,可以为 combobox的items添加项目.请问是否可以动态创建?(run-time时由程序加入)

解决: var A:TDataSource: B:TcxlookupcomboboxProperties; begin A:=TDataSource.create(self); B:=tcxlookupcomboboxproperties.create(self); A.Dataset:=Dic_ry_xb;//此处指定数据源。 b.listdource:=a;//此处指明字段的listsource属性。 b.keyfieldnames:='a'; //此处指明字段的关键字段 b.listfieldnames:='b'; //此处指明字段的返回值。 b.listcolumns.items[0].caption:='x; //此处默认是会建立一个字段,但是显示的表头是name,所以此处让它

显示为自己想要的中午显示。 cxGrid1DBTableView1c1_sex_code.Properties:=b; //此处指明是那个字段。end; //这个是初始化的代码,

如何在 cxGrid 中动态创建 View 以及它的 Columns ?

DevExpress

的 cxGrid 实在太复杂了,连动态创建一个 View ,以及自动生成数据集的所有列,都不能使用一般的方法。下面显示了如何用代码来进行这些操作:

TableView := TcxGridDBTableView(cxGrid1.CreateView(TcxGridDBTableView));with

TableView dobegin DataController.DataSource := 数据源; (DataController as

IcxCustomGridDataController).DeleteAllItems; (DataController as

IcxCustomGridDataController).CreateAllItems;end;

cxGrid 使用指南 1的更多相关文章

  1. cxgrid属性说明,每次用的时候费时费力查找。

    由层得到数据表名: procedure TFB_PatientWaiting.cxgrdbtblvwGrid1DBTableView_MyPatienWaitingDblClick( Sender: ...

  2. 转 cxgrid属性说明

    TCXGRID控件:属性:ActiveLevel: 当前层BorderStyle: 窗口风格Color: 颜色FocusedView: 当前View;Font: 字体LevelTabs: 类似Page ...

  3. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  4. UE4新手之编程指南

    虚幻引擎4为程序员提供了两套工具集,可共同使用来加速开发的工作流程. 新的游戏类.Slate和Canvas用户接口元素以及编辑器功能可以使用C++语言来编写,并且在使用Visual Studio 或 ...

  5. JavaScript权威指南 - 对象

    JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删. JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等. JavaScript对象除了可以保持自 ...

  6. JavaScript权威指南 - 数组

    JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...

  7. const extern static 终极指南

    const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...

  8. Atitit.研发管理软件公司的软资产列表指南

    Atitit.研发管理软件公司的软资产列表指南 1. Isv模型下的软资产1 2. 实现层面implet1 3. 规范spec层1 4. 法则定律等val层的总结2 1. Isv模型下的软资产 Sof ...

  9. HA 高可用软件系统保养指南

    又过了一年 618,六月是公司一年一度的大促月,一般提前一个月各系统就会减少需求和功能的开发,转而更多去关注系统可用性.稳定性和管控性等方面的非功能需求.大促前的准备工作一般叫作「备战」,可以把线上运 ...

随机推荐

  1. B2C电子商务系统研发——产品媒体常见功能点

    产品媒体常见功能点 电商研发系列——产品媒体常见功能点 支持图片.视频和文档等媒体类型 产品图片对清晰度要求比极高,但又不能太大,所以图片一般是jpg格式. 视频一般是flv流媒体格式,如果是嵌入产品 ...

  2. RS:关于数据挖掘中的推荐系统

    一.推荐系统概述和常用评价指标 1.1 推荐系统的特点 在知乎搜了一下推荐系统,果真结果比较少,显得小众一些,然后大家对推荐系统普遍的观点是: (1)重要性UI>数据>算法,就是推荐系统中 ...

  3. easy ui datagrid 数据分页

    参照easyui官方网站提供的demo写了个datagrid数据分页的demo, 具体参数我就不一一罗列了,详细见官方网站, 这里只介绍一下具体的注意事项和常乃用到的几项, $('#test').da ...

  4. Thinkphp+AJAX动态验证用户输入是否合法

    遇到用户注冊等情况时.假设等用户输入全部信息,点击注冊button提交后.再验证输入是否正确,体验非常不好,并且非常浪费用户的时间,添加注冊成本,这里提供一个样例,演示了怎么使用ajax进行单步验证, ...

  5. 【百度地图API】怎样制作多途经点的线路导航——驾车篇

    摘要: 休假结束,酸奶小妹要从重庆驾车去北京.但是途中要去西安奶奶家拿牛奶饼干呢! 用百度地图API,能不能帮我实现这个愿望呢? ----------------------------------- ...

  6. macbook使用“终端”远程登录linux主机

    登录mac系统后,依次打开顶部菜单,“前往” -> “应用程序” -> “实用工具” -> “终端”,如下图:   在打开的终端页面,输入如下代码: ssh user@hostnam ...

  7. Laravel 项目开发规范

    参考:https://fsdhub.com/books/laravel-specification

  8. ultragrid checkbox

    울트라그리드에 체크박스 넣을 사용하는 속성. cols["checked"].Header.Caption = ""; cols["checked ...

  9. poj Squares n个点,共能组成多少个正方形 二分 + 哈希

    题目链接:http://poj.org/problem?id=2002 测试数据: 41 00 11 10 090 01 02 00 21 22 20 11 12 14-2 53 70 05 20 有 ...

  10. NYOJ 78 圈水池 (入门级凸包)

    题目链接:nyoj 78  单调链凸包小结 题目讲解:本题考查的主要是凸包的用法,算是入门级的吧,当然前提是你接触过,平面几何: AC代码: #include<iostream> #inc ...