delphi控件cxGrid用法大全1.docx
- 文档编号:10979258
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:34
- 大小:33.37KB
delphi控件cxGrid用法大全1.docx
《delphi控件cxGrid用法大全1.docx》由会员分享,可在线阅读,更多相关《delphi控件cxGrid用法大全1.docx(34页珍藏版)》请在冰豆网上搜索。
delphi控件cxGrid用法大全1
delphi中exGrid使用汇总
(一)
1.去掉exGrid中台头的Box
解决:
在tableviewl的ptionsview的groupbybox二false;
2•统计功能
解决:
⑴tableviewtableview1的optionsviewfooter=ture
然后在cxGRid1的customize..中的summary的需要合计的列kind二skSum在Footer的第一列显示[合计:
]?
加一个Summary项,Column设为Grid的第一列,Kind设为skNone?
在该Summary项的OnGetText事件中,输入:
?
procedure(?
Sender:
TcxDataSummaryltem;constAValue:
Variant;AIsFooter:
Boolean;?
varAText:
String);?
begin?
AText:
='合计:
';?
end;
事件中,输入:
?
(2)按条件汇总:
?
在TableView的DataController->Summary->FooterSummary->OnSummaryprocedure(?
ASender:
TcxDataSummaryItems;Arguments:
TcxSummaryEventArguments;?
varOutArguments:
TcxSummaryEventOutArguments);?
begin?
ieldName;?
.RecordIndex,]>1)ind=skSum)then?
:
=0;怎样实现如EXCEL一样的,当前格二G14+G15+G16这样的功能
****************************************************************************
10.鼠标右击cxGrid1DBBandedTableView1菜单里的EditLayout什么用,怎么使用
拖动时会显示箭头的,就是说可以拖一个字段放
解决:
可以拖动字段,并列的可以拖成有层次感(一层层),
11.怎样将exGrid里的数据导入到EXCEL,HTML,XML和TEXT
解决:
uses
exExportGrid4Link;(exExportGrid6Link)
procedure(Sender:
TObject);
begin
ExportGrid4ToEXCEL('d:
/',cxGrid1,True,True);
ExportGrid4ToTEXT('d:
/',cxGrid1,True,True);
ExportGrid4ToXML('d:
/',cxGrid1,True,True);
ExportGrid4ToHTML('d:
/',cxGrid1,True,True);
end;
****************************************************************************
12.如何使满足条件的数据显示不同的颜色
解决:
var
AYellowStyle:
TcxStyle;
procedure(Sender:
TObject);
begin
如何从外边的TXT文件导入到cxGrid
解决:
procedureCustomizeColumns;
procedureLoadData;
procedure;
const
cDistance=1;
cRadius=5;
cPeriod=4;
cPstring=0;
var
I:
Integer;
begin
DecimalSeparator:
='.';
withcxGrid1TableView2doforI:
=0toColumnCount-1do
ifIin[cDistance,cRadius]then
Columns[l].:
=TcxlntegerValueType:
二TcxStringValueType:
二TcxFloatValueType;xt';
AHeaderLineCount=2;
var
ARecords,AValues:
TStringList;
I:
Integer;
procedureInitRecord(constStr:
string);
var
J:
Integer;
V:
Variant;
begin
:
=Str;
forJ:
=0to-1do
if[J]<>'-'then
begin
V:
=[J];
ifnotVarIsNull(V)then
end;
end;
begin
ifnotFileExists(AFileName)then
raise('Datafilenotfound');
ARecords:
=;
AValues:
=;
withARecordsdo
try
LoadFromFile(AFileName);
forI:
=0toCount-(AHeaderLineCount+1)do
InitRecord(Strings[I+AHeaderLineCount]);
finallyend;
end;
procedure(Sender:
TObject);
begin
CustomizeColumns;
LoadData_Zcfz;end;
****************************************************************************
14如何改变列的颜色?
解决:
var
AFirstColumnStyle:
TcxStyle;
procedure(Sender:
TObject);
begin
:
=AFirstColumnStyle;
end;
****************************************************************************
15Setasdefault的用法?
解决:
Setasdefault的用法是为了解决设置参数的方便而做的,比如:
连好数据库以后,更改cxGrid1DBBandedTableView1->OptionsCustomize->ColumnFiltering设为False。
(这个设置可以将字段名的
下拉单给去掉)更改cxGrid1DBBandedTableView1->OptionsView->Navigator设置为True。
然后右击cxGrid1DBBandedTableView1,
在弹出的菜单栏里面点击Setasdefault。
OK,下次你再产生一个新的cxGrid1DBBandedTableView1时这些设置和刚才的一样了。
如果需要设置的参数很多的时候,这个Setas
default很有用!
****************************************************************************
16.怎样使鼠标移动时,相应的单元里的文字变色?
解决:
var
FTrackItem:
TcxCustomGridTableltem;
FTrackRec:
TcxCustomGridRecord;
procedure(
Sender:
TcxCustomGridTableView;ACanvas:
TcxCanvas;
AViewlnfo:
TcxGridTableDataCellViewlnfo;varADone:
Boolean);begin
if=FTrackRec)and=FTrackltem)then
begin
end;
end;
procedure(Sender:
TObject;
Shift:
TShiftState;X,Y:
Integer);
var
AHitTest:
TcxCustomGridHitTest;
ATrackltem:
TcxCustomGridTableltem;
ATrackRec:
TcxCustomGridRecord;
begin
ATrackltem:
=FTrackltem;
ATrackRec:
=FTrackRec;
ifAHitTestisTcxGridRecordCellHitTestthen
begin
FTrackltem:
=TcxGridRecordCellHitTest(AHitTest).ltem;
FTrackRec:
=TcxGridRecordCellHitTest(AHitTest).GridRecord;endelse
begin
FTrackltem:
=nil;
FTrackRec:
=nil;
end;
if(ATrackltem<>FTrackltem)or(ATrackRec<>FTrackRec)thenbegin
怎样设计多表头的cxGrid?
解决:
cxGrid可以解决如下的表头:
|说明1|说明2|
|字段1|字段2|字段3|字段4|
|字段5|字段6||字段7|字段8|字段9|
OK了。
或者在鼠标右击
实现这个很简单,你可以直接在上面拖动字段名,拖动时会显示箭头的,放入你想显示的位置就
cxGridIDBBandedTableViewl菜单里的EditLayout里也可以拖放。
但是cxGrid不能实现如下的多表头形式:
|说明1|说明2|
|说明3|
说明4|说明5|说明6|
|字段1|
字段2|
|字段3|
字段4|字段5|
不知道有谁能实现这样的多表头
****************************************************************************
18.在主从表结构时,当点幵“+”怎样将焦点聚在相应主表的记录上?
解决:
var
HitTest:
TcxCustomGridHitTest;procedure(Sender:
TObject;
Button:
TMouseButton;Shift:
TShiftState;X,Y:
Integer);
begin
:
=True;
end;
****************************************************************************
19CXGrid4如何展开全部节点
20.cxGrid如何动态创建Items的Editor的项
解决:
cxGrid的列有一个属性,它的编辑框可以指定combobox,spinedit等.在设计时,可以为
combobox的items添加项目.请问是否可以动态创建(run-time时由程序加入)
var
A:
TDataSource:
B:
TcxlookupcomboboxProperties;
begin
A:
=(self);
B:
=(self);
:
=Dic_ry_xb;1c拷贝文件时有进度显示
解决:
procedure(sourcef,targetf:
string);
var
FromF,ToF:
file;
NumRead,NumWritten:
Integer;
Buf:
array[1..2O48]ofChar;
n:
integer;
begin
AssignFile(FromF,sourcef);
Reset(FromF,1);{Recordsize=1}
AssignFile(ToF,targetf);{Openoutputfile}
Rewrite(ToF,1);{Recordsize=1}
n:
=0;
repeat
BlockRead(FromF,Buf,SizeOf(Buf),NumRead);
cxGrid设置斑马线
解决:
在属性中有ContentEven(奇数行风格)ContentOdd(偶数行风格),设定一下风格就好了
****************************************************************************
23根据记录内容更改字体颜色
解决:
参考范例CustomDrawTableViewDemo,
主要在事件中实现。
如下代码:
hen
beginopupMenu;utoHotkeys:
=maManual;FMenultem);?
FMenultem);?
?
FMenultem);?
?
FMenultem);?
?
FMenultem);?
?
FMenultem);?
?
44);-1;FMenultem);?
?
FMenultem);?
?
37);?
:
=TPopupMenu(AMenu).-1;?
:
二'导出(&E)';?
:
=;?
TPopupMenu(AMenu).(FMenultem);?
?
14);?
:
=TPopupMenu(AMenu).-1;?
:
=;?
TPopupMenu(AMenu).(FMenultem);?
end;?
end;?
?
procedure(Sender:
TObject);?
var?
FileName,FileExt,msg:
String;?
begin?
?
begin?
msg:
='没有导出数据…';?
(PChar(msg),PChar,?
MB_OKorMB_lconWarning);?
Exit;?
end;?
?
ml'?
+'|文本文件(*txt)|*txt|网页文件(*html)|*html';?
?
?
?
Exit;?
?
?
FileExt:
=LowerCase(ExtractFileExt(FileName));?
ifFileExt='.xls'then?
ExportGrid4ToExcel(FileName,?
elseifFileExt='.xml'then?
ExportGrid4ToXML(FileName,?
elseifFileExt='.txt'then?
ExportGrid4ToText(FileName,?
elseifFileExt='.html'then?
ExportGrid4ToHTML(FileName,?
else?
begin?
msg:
='不支持的导出文件类型...';?
(PChar(msg),PChar,?
MB_OKorMB_IconError);?
Exit;?
end;?
?
msg:
='导出完成...';?
(PChar(msg),PChar,?
MB_OKorMB_Iconlnformation);?
end;?
?
procedure(Sender:
TObject);?
begin?
isible:
=True;?
TMenultem('miExpandAIIGroup')).Visible:
=True;?
TMenultem('miCollapseAIIGroup')).Visible:
=True;?
end?
else?
begin?
TMenultem('miLineForGroup')).Visible:
=False;?
TMenultem('miExpandAIIGroup')).Visible:
=False;?
TMenultem('miCollapseAIIGroup')).Visible:
=False;?
end;?
end;?
end;?
?
procedure(Sender:
TObject);?
begin?
ni';?
ifFiIeExists(IniFileName)then?
leName)ni';?
ifnotDirectoryExists(ExtractFiIeDir(IniFileName))then?
CreateDir(ExtractFiIeDir(IniFileName));?
保存为布局文件
实例:
IniFileName:
string;
procedure(Sender:
TObject);toreToIniFile('c:
/',True,[gsoUseSummary]);?
zj:
本条与50条重复
(以下原博主转载自)
****************************************************************************
28在主从TableView中根据主TableView得到对应的从TableView
解决:
var?
ADetailDC:
TcxGridDataController;?
AView:
TcxCustomGridTableView;?
begin?
withdo?
ADetailDC:
=TcxGridDataController(GetDetailDataController(FocusedRecordlndex,0));?
AView:
=;?
end;
29定位在第一行并显示内置编辑器
:
=[0];
30隐藏" 该文本存储在scxGridNoDataInfoText资源字符串,可以将该资源字符串的内容设为空 来隐藏该文本。 usescxClasses,cxGridStrs; cxSetResourceString(@scxGridNoDatalnfoText,”); ayoutChanged; 31删除应用过滤后的行 var I: Integer; begin with forI: =0to-1do begin [0].Focused: =True; DataControlle end; =============================================================? 32根据单元的值设置样式? 解决: procedurevaForm>.vaColumn>StylesGetContentStyle(? Sender: TcxCustomGridTableView;ARecord: TcxCustomGridRecord;? Altem: TcxCustomGridTableItem;outAStyle: TcxStyle);? begin? if[]=aSomeValuethen? AStyle: =vaSomeStyle>;? end;? ? procedurevaForm>.vaView>StylesGetContentStyle(? Sender: TcxCustomGridTableView;ARecord: TcxCustomGridRecord;? AItem: TcxCustomGridTableItem;outAStyle: TcxStyle);? var? AColumn: TcxCustomGridTableItem;? begin? AColumn: =(SenderasTcxGridDBTableView).GetColumnByFieldName('Email');? ifVarToStr[])=''then? AStyle: =cxStyleNullEmail;? end;? ? ? or? ? ? withdo? AValue: =Values[FocusedRecordIndex,GetltemByFieldName('SomeFieldName')」ndex];? ? **************************************************************************** 33动态生成BandedView 解决: var? AView: TcxCustomGridView;? AView: =vcxGrid>.CreateView(TcxGridDBBandedTableView);? TcxGridDBBandedTableView(AView).: = TcxGridDBBandedTableView(AView).;? withTcxGridDBBandedTableView(AView).do? begin? Visible: =False;? FixedKind: =fkLeft;? end;? TcxGridDBBandedTableView(AView).;? vcxGridLeveAGridView: =AView; end; **************************************************************************** 34当底层数据集为空时显示一条空记录 解决: procedure
TObject);?
var?
View:
TcxGridDBTableView;?
begin?
View:
=TcxGridDBTableView((SenderasTcxGrid).FocusedView);?
?
begin?
?
?
end;?
end;
***********************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- delphi 控件 cxGrid 用法 大全