delphi控件cxGrid用法大全(2)

来源:网络收集 时间:2025-07-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

**************************************************************************** 14 如何改变列的颜色? 解决: var

AFirstColumnStyle: TcxStyle;

procedure TForm1.FormCreate(Sender: TObject); begin //列颜色

AFirstColumnStyle := TcxStyle.Create(Self); AFirstColumnStyle.Color := clAqua; AFirstColumnStyle.TextColor := clBlue;

cxGrid1TableView1.Columns[1].Styles.Content := AFirstColumnStyle; end;

**************************************************************************** 15 Set as default的用法?

解决:Set as default的用法是为了解决设置参数的方便而做的,比如:

连好数据库以后,更改cxGrid1DBBandedTableView1->OptionsCustomize-> ColumnFiltering 设为False。(这个设置可以将字段名的下拉单给去掉)更改cxGrid1DBBandedTableView1->OptionsView- >Navigator 设置为True。然后右击cxGrid1DBBandedTableView1,在弹出的菜单栏里面点击Set as default。

OK,下次你再产生一个新的cxGrid1DBBandedTableView1时这些设置和刚才的一样了。如果需要设置的参数很多的时候,这个Set as default很有用!

**************************************************************************** 16. 怎样使鼠标移动时,相应的单元里的文字变色? 解决: var

FTrackItem: TcxCustomGridTableItem; FTrackRec: TcxCustomGridRecord;

procedure TForm1.cxGrid1DBTableView1CustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin

if (AViewInfo.GridRecord = FTrackRec) and (AViewInfo.Item = FTrackItem) then begin

ACanvas.Font.Color := clred; //红色字体 ACanvas.Font.Style := [fsUnderline];//带下划线 end; end;

procedure TForm1.cxGrid1DBTableView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var

AHitTest: TcxCustomGridHitTest; ATrackItem: TcxCustomGridTableItem; ATrackRec: TcxCustomGridRecord;

begin

ATrackItem := FTrackItem; ATrackRec := FTrackRec;

AHitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y); if AHitTest is TcxGridRecordCellHitTest then begin

FTrackItem := TcxGridRecordCellHitTest(AHitTest).Item; FTrackRec := TcxGridRecordCellHitTest(AHitTest).GridRecord; end else begin

FTrackItem := nil; FTrackRec := nil; end;

if (ATrackItem <> FTrackItem) or (ATrackRec <> FTrackRec) then begin

// Invalidate old cell if ATrackRec <> nil then

ATrackRec.Invalidate(ATrackItem); // Invalidate new cell if FTrackRec <> nil then

FTrackRec.Invalidate(FTrackItem); end; end;

**************************************************************************** zj注:17-27转载自http://blog.csdn.net/shuaihj/article/details/6131011

17. 怎样设计多表头的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 | 不知道有谁能实现这样的多表头?

**************************************************************************** 18. 在主从表结构时,当点开“+”时怎样将焦点聚在相应主表的记录上? 解决: var

HitTest: TcxCustomGridHitTest;

procedure TColumnsShareDemoMainForm.tvProjectsMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin

// Note that the Sender parameter is a Site

HitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y); // The point belongs to the [+]/[-] button area if HitTest is TcxGridExpandButtonHitTest then // Move focus to the record

TcxGridExpandButtonHitTest(HitTest).GridRecord.Focused := True; end;

**************************************************************************** 19 CXGrid4如何展开全部节点

解决:GridDBTableView1.DataController.Groups.FullExpand; **************************************************************************** 20. 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; //这个是初始化的代码

**************************************************************************** 21. 拷贝文件时有进度显示 解决:

procedure TForm1.mycopyfile(sourcef,targetf:string); var

FromF, ToF: file;

NumRead, NumWritten: Integer; Buf: array[1..2048] of Char; n:integer; begin

AssignFile(FromF, sourcef); Reset(FromF, 1); { Record size = 1 } AssignFile(ToF,targetf); { Open output file } Rewrite(ToF, 1); { Record size = 1 } n:=0; repeat

BlockRead(FromF, Buf, SizeOf(Buf), NumRead);

form1.label1.caption:=IntToStr(sizeof(buf)*n*100 div FileSize(FromF))+'100%'; application.ProcessMessages; //显示进度

BlockWrite(ToF, Buf, NumRead, NumWritten); inc(n);

until (NumRead = 0) or (NumWritten <> NumRead); form1.Label1.Caption:='100%'; CloseFile(FromF); CloseFile(ToF); end;

procedure TForm1.Button1Click(Sender: TObject); begin

mycopyfile('e:/components/tv2k-w2k.zip','c:/a.zip'); end;

**************************************************************************** 22. cxGrid 设置斑马线 解决:

在TcxGridDBBandedTableView.Styles属性中有 ContentEven(奇数行风格) ContentOdd (偶数行风格) ,设定一下风格就好了。 **************************************************************************** 23 根据记录内容更改字体颜色 解决:

参考范例CustomDrawTableViewDemo,

主要在TcxGridDBBandedTableView.OnCustomDrawCell事件中实现。 如下代码:

if (Pos('-',AViewInfo.GridRecord.DisplayTexts[colOrderProductCount.Index]) > 0) then begin //标识负数记录

//ACanvas.Canvas.Brush.Color:= clMoneyGreen; ACanvas.Canvas.Font.Color:= clRed;//clActiveCaption end;

其中colOrderProductCount是“产品订数”列。 还要有一步就是要刷新显示

TcxGridDBBandedTableView.LayoutChanged(); //tvCars.LayoutChanged(False);

TcxGridDBBandedTableView.Painter.Invalidate;

**************************************************************************** 24 用代码展开/收缩主从结构 解决:

Self.tvDepartment.ViewData.Expand(True); Self.tvDepartment.ViewData.Collaspe(True); 注:tvDepartment为主表对应的TableView

**************************************************************************** 25 在内置右键菜单的后面增加菜单项 解决:

首先应在Form上加一个cxGridPopupMenu控件 以启用右键菜单 UseBuildInPopupMenus设为True

procedure TFormItemList.FormCreate(Sender: TObject); var

AMenu: TComponent;

FMenuItem, FSubMenuItem: TMenuItem; begin

AMenu := nil;

if cxGridPopupMenu.BuiltInPopupMenus.Count = 0 then Exit;

AMenu := cxGridPopupMenu.BuiltInPopupMenus[0].PopupMenu; //第一个内置右键菜单(表头菜单) if Assigned(AMenu) and AMenu.InheritsFrom(TPopupMenu) then begin

TPopupMenu(AMenu).AutoHotkeys := maManual; //手动热键

//-------------------------

FMenuItem := TMenuItem.Create(Self); FMenuItem.Caption := '-';

FMenuItem.Name := 'miLineForGroup'; TPopupMenu(AMenu).Items.Add(FMenuItem);

//展开所有组

FMenuItem := TMenuItem.Create(Self); FMenuItem.Name := 'miExpandAllGroup'; FMenuItem.Caption := '展开所有组(&X)'; FMenuItem.OnClick := miExpandAllGroupClick; TPopupMenu(AMenu).Items.Add(FMenuItem);

//收缩所有组

FMenuItem := TMenuItem.Create(Self); FMenuItem.Name := 'miCollapseAllGroup';

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库delphi控件cxGrid用法大全(2)在线全文阅读。

delphi控件cxGrid用法大全(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/460570.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219