TAdvStringGrid控件的一些常用的属性事件和方法
更新时间:2023-12-18 01:16:02 阅读量: 教育文库 文档下载
本文简单的介绍了TAdvStringGrid控件的一些常用的属性事件和方法,主要用于统计数据和设计比较复杂的表格!核心部分:合并单元格的几个函数和过程!
1.可否进行编辑
设置Options中goEditing设置为true。
2.点击鼠标时直接进入编辑,或允许、不允许改变行或列宽等特性,都可以在MouseActions中设置。
3.设置Grid中,某一列的数据格式,预定义的格式有:
enum TEditorType { edNormal, edSpinEdit, edComboEdit, edComboList, edEditBtn, edCheckBox, edDateEdit, edDateEditUpDown, edTimeEdit, edButton, edDataCheckBox, edNumeric, edPositiveNumeric, edFloat, edCapital, edMixedCase, edPassword, edUnitEditBtn, edLowerCase, edUpperCase, edFloatSpinEdit, edTimeSpinEdit, edDateSpinEdit, edNumericEditBtn, edFloatEditBtn, edCustom, edRichEdit, edNone, edUniEdit, edUniComboEdit, edUniComboList };
通过OnGetEditorType()事件进行设置,例如:
void __fastcall TForm1::editgridGetEditorType(TObject *Sender,int aCol, int aRow, TEditorType &aEditor) {
switch (aCol) {
case 1:aEditor=edComboList; break; //设置第一列为ComboBox类型输入
case 2:aEditor=edEditBtn; break; //设置第二列为EditBtn类型输入,弹出一个选择框 case 3:aEditor=edSpinEdit; break; //设置第三列为SpinEdit类型输入
case 4:aEditor=edDateEdit; break; //设置第四列为日期型输入,弹出DatetimePicker。 } }
4.TAdvStringGrid中每一种格式的输入与输出都要对应,否则载入时不能识别(因为各种类型的文件之间存储格式是不一样的)。例如:
如果保存时使用
TAdvStringGrid::SaveToFile(),那么载入时就要相应的使用
TAdvStringGrid::LoadFromFile();其它对应如下:
TAdvStringGrid:: LoadFromBinFile();??TAdvStringGrid:: SaveToBinFile(); TAdvStringGrid:: LoadFromCSV ();??TAdvStringGrid:: SaveToCSV(); 等等。
5.增加edComboEdit和edComboList的下拉列表: 方法:
TAdvStringGrid:: ClearComboString(void); //清除已有了下拉列表 TAdvStringGrid:: AddComboString(AnsiString S); TAdvStringGrid::Combobox->Sorted = true;
通过Combobox可以访问内置的Combo类型的控件的属性和方法。
6.增加edCheckBox界面处理 在Grid中数据载入之后,使用:
TAdvStringGrid:: void __fastcall AddCheckBox(int ACol, int ARow, bool State, bool Data)方法来添加CheckBox界面处理. 例如:
for(i=1;i
editgrid->AddCheckBox(5,i,FALSE,FALSE);
7.通过TAdvStringGrid:: SpinEdit对象,可以访问内置的SpinEdit类的特性;
同样的道理,通过其它一些内置的对象,可以访问这些类的属性,执行这些类的方法。
8.TAdvStringGrid中的排序问题:
首先设置排序参数:通过TAdvStringGrid:: SortSettings属性(发布TSortSettings类为一个属性),通过这个属性设置
然后调用TAdvStringGrid::QSort()方法应用SortSettings。
排序方向: SortSettings-> Direction=enum {sdAscending, sdDescending}; 排序列:SortSettings->Column = 3;
9.TAdvStringGrid::AutoSize属性,自动设置列宽,不推荐使用,自动调整后,真的很难看。
10.多行显示
bool TAdvStringGrid:: Multilinecells属性,是否支持多行显示,如果支持的话,可以用”#13”作为分隔符插入多行字符串,用多行显示。
折中的方法,可以用WordWrap来支持多行显示
一般在设置和取消多行显示时,同时,对TAdvStringGrid::DefaultRowHeight进行设置,将有良好的效果。
11.欲设置某些行或列为Fixed风格的显示,使用OnIsFixedCell()事件句柄来处理,调用TAdvStringGrid:: Repaint()方法来使设置生效。 例如:
If(colfix->Checked) { //colfix为一个TCheckBox AdvStringGrid1->Repaint(); }
//事件处理句柄
void __fastcall TForm1::AdvStringGrid1IsFixedCell(TObject *Sender, int Arow, int Acol, bool &isfixed) {
if ((Acol==3) && (colfix->Checked)) isfixed=TRUE; else isfixed=FALSE; }
12.处理显示风格,如添加货币前缀和物理量单位 在TAdvStringGrid::OnGetFormat()事件处理句柄中处理。 aPrefix参数设置显示前缀; aSuffix参数设置显示后缀; AStyle
参
数
enum TSortStyle { ssAutomatic, ssAlphabetic, ssNumeric, ssDate, ssAlphaNoCase, ssAlphaCase, ssShortDateEU, ssShortDateUS, ssCustom, ssFinancial, ssAnsiAlphaCase, ssAnsiAlphaNoCase, ssRaw, ssHTML, ssImages, ssCheckBox, ssUnicode };设置排序风格;
13.是否能对特定的单元格进行编辑 用TAdvStringGrid::OnCanEit()事件句柄来处理,
设置bool &canedit参数来达到能否编辑某些单元格的效果
14.隐藏和显示某些单元格
TAdvStringGrid:: UnHideColumn(int ACol) TAdvStringGrid::HideColumn(int ACol);
15.查找的实现: TAdvStringGrid::Find() TAdvStringGrid::FindNext(); 两个方法返回TPoint类型, Find
(
)
需
要
一
个
TFindParams
类
型
的
参
数
,
enum TFindParameters { fnMatchCase, fnMatchFull, fnMatchRegular, fnDirectionLeftRight, fnMatchStart, fnFindInCurrentRow, fnFindInCurrentCol, fnIncludeFixed, fnAutoGoto, fnIgnoreHTMLTags, fnBackward, fnIncludeHiddenColumns };可通过自己设计一个查找窗体来实现。 例如:
//----------findfirst----------
void __fastcall TForm1::Findfirst1Click(TObject *Sender) {
TFind *Find;
TFindParams findparams; TPoint res;
Find = new TFind(Form1);
if (Find->ShowModal()==mrOk) {
if (Find->chkcase->Checked) findparams << fnMatchCase; if (Find->chkfull->Checked) findparams << fnMatchFull; if (Find->chkregular->Checked) findparams << fnMatchRegular; if (Find->dir->ItemIndex==1) findparams << fnDirectionLeftRight; if (Find->where->ItemIndex==1) findparams << fnFindInCurrentCol; if (Find->where->ItemIndex==2) findparams << fnFindInCurrentRow;
res = AdvStringGrid1->FindFirst(Find->findtext->Text,findparams); if (res.x>=0) {
AdvStringGrid1->Col=res.x; AdvStringGrid1->Row=res.y;
} else
ShowMessage(\}
delete Find; }
//----------findnext----------
void __fastcall TForm1::Findnext1Click(TObject *Sender) { TPoint res;
res = AdvStringGrid1->FindNext();
if ((res.x>=0) && (res.y>=0)) {
AdvStringGrid1->Col=res.x; AdvStringGrid1->Row=res.y; } else
ShowMessage(\} //----------
16.TAdvStringGrid:: Ints[int ACol][int ARow]以Integer类型的值来访问单元格,如果读取失败,会触发异常.
17.对特定单元格的对齐方式进行处理
添加TAdvStringGrid::OnGetAlignment事件处理句柄。 18.
(1).添加图标:TAdvStringGrid::AddIcon();
原型:void __fastcall AddIcon(int ACol, int ARow, Graphics::TIcon *aicon, TCellHAlign hal, TCellVAlign val) (2).添加旋转字体:TAdvStringGrid:: AddRotated;
原型:void __fastcall AddRotated(int ACol, int ARow, short AAngle, AnsiString s); (3).从ImageList中取出图象添加到单元格中:TAdvStringGrid:: AddImageIdx;
原型:void __fastcall AddImageIdx(int ACol, int ARow, int Aidx, TCellHAlign hal, TCellVAlign val); 参数Aidx为图片在ImageList中的索引.
(4).向单元格中添加位图:TAdvStringGrid:: AddBitmap; 原
CellVAlign val);
参数bool Transparent设置是否显示透明. (5).自动添加编号:AutoNumberCol
TAdvStringGrid:: AutoNumberCol(int ACol)方法,对指定的列从1进行编号,不对Fixed行中的列编号;
型
:
void __fastcall AddBitmap(int ACol, int ARow, Graphics::TBitmap *ABmp, bool Transparent, TCellHAlign hal, T
用途:用于产生首列的自动编号。
(6).向单元格中添加多个图象:TAdvStringGrid::AddMultiImage 原型:void __fastcall AddMultiImage(int ACol, int ARow, int Dir, TCellHAlign hal, TCellVAlign val);
事实上只是向系统声明一下,这个单元格将放置多个图象,图象的添加通过GridImages来添加。例如: AdvStringGrid2->AddMultiImage(5,1,0,haBeforeText,vaCenter);
AdvStringGrid2->CellImages[5][1]->Add(0); AdvStringGrid2->CellImages[5][1]->Add(1);
(7).如果TAdvStringGrid:: EnableHTML属性启用,那么,单元格中输入HTML源代码,它将以HTML格式显示出来,例如:
AdvStringGrid2->Cells[7][1]=\formatting\
AdvStringGrid2->Cells[7][2]=\
AdvStringGrid2->Cells[7][3]=\----------
miniHTML\
AdvStringGrid2->Cells[7][4]=\
AdvStringGrid2->Cells[7][5]=\这些内容在TAdvStringGrid中将以HTML格式显示出来。
(8).通过TAdvStringGrid:: RichEdit属性可以调用TAdvStringGrid的内置的RichEdit类,是一个RichEdit编辑器,可以使用它处理RTF格式文档,然后使用TAdvStringGrid::RichToCell方法写入单元格. 原型:void __fastcall RichToCell(int Col, int Row, Comctrls::TRichEdit *Richeditor);
可以把用TAdvStringGrid::RichEdit::Clear()把RichEdit清空,再重新添加内容,然后再添加到单元格中。 可以通过TAdvStringGrid::RichEdit::SelAttributes来调整RichEdit的格式。 (9).通过TAdvStringGrid:: AddProgress方法来在单元格中添加进度条
原型:void __fastcall AddProgress(int ACol, int ARow, Graphics::TColor FGColor, Graphics::TColor BKColor); 单元格的整数值就是当前进度值,可以使用TAdvStringGrid::Ints[col,row]来访问这个值。 (10).通过TAdvStringGrid::AddComment方法来添加注释。
原型:void __fastcall AddComment(int ACol, int ARow, AnsiString comment); 添加注释之后,会在单元格的右上角显示一个小的红色的三角号,例如: AdvStringGrid2->AddComment(8,3,\AdvStringGrid2->Cells[8][3]=\comment\
(11).通过TAdvStringGrid增强型的HTML语法解析,添加内部单元格之间的链接,例如:
AdvStringGrid2->Cells[8][4]=\通过TAdvStringGrid:: AddButton来在单元格中添加按钮 原val);
当添加的按钮被按下时,OnButtonClick事件被触发(?经测试,不能触该事件)。
型
:
void __fastcall AddButton(int ACol, int ARow, int bw, int bh, AnsiString Caption, TCellHAlign hal, TCellVAlign
19.在TAdvStringGrid::OnGetCellsColor()事件处理句柄中,可以对单元格的颜色和字体进行设置.
21.添加可收缩结点,外观上看起来类似于分组, 方法:
TAdvStringGrid::FixedCols=0; TAdvStringGrid::FixedColWidth=20; TAdvStringGrid::AddNode(2,4); TAdvStringGrid::AddNode(7,2); TAdvStringGrid::AddNode(13,4); TAdvStringGrid::AddNode()方法原型:
void __fastcall AddNode(int ARow, int Span);第二个参数为分组的跨越度。
22.展开所有结点:TAdvStringGrid:: ExpandAll()方法 收缩所有结点:TAdvStringGrid:: ContractAll()方法 TAdvStringGrid::CellNode->NodeType=cnFlat; TAdvStringGrid::CellNode->NodeType=cn3D; TAdvStringGrid::CellNode->NodeType=cnGlyph;
以上三个属性设置StringGrid以结点的方式显示时的结点显示风格。
23.对TAdvStringGrid添加过滤
使用TAdvStringGrid中预定义的一种Filter类: TFilterData 例如: TFilterData* fd;
AdvStringGrid3->Filter->Clear();
fd = AdvStringGrid3->Filter->Add();
fd->Condition = ComboBox1->Items->Strings[ComboBox1->ItemIndex]; fd->Column = 1;
fd = AdvStringGrid3->Filter->Add();
fd->Con_dition=ComboBox2->Items->Strings[ComboBox2->ItemIndex]; fd->Column = 3;
AdvStringGrid3->FilterActive=true;
24.自动调整列宽AutoSizeColumns
原型:void __fastcall AutoSizeColumns(const bool DoFixedCols, const int Padding) 用第二个参数来指定自动调整后需要额外增加的空间
25.TAdvStringGrid的打印。
使用TAdvPreviewDialog连接TAdvStringGrid来预览.这个控件中提供了接口可以直接对界面进行本地化。
使用TAdvStringGrid的Print()方法来打印。打印设置调整TAdvStringGrid::TPrintSettins类的相关属性。
正在阅读:
TAdvStringGrid控件的一些常用的属性事件和方法12-18
蚂蚁大战09-04
Java2课后选择题08-19
2018年英语复习资料答案03-08
精品K12学习初中八年级资料语文下册《多一些宽容》优秀教学设计 苏教版12-31
创业能力试卷1(答案)03-07
统计学基础思考与应用技能训练答案10-19
橄榄球英语02-16
免疫大题05-31
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- TAdvStringGrid
- 控件
- 属性
- 常用
- 一些
- 事件
- 方法
- 核医学科岗位工作总结汇报报告与工作计划范文模板
- 物理错题整理(三)
- IBM Aix System Support经验谈
- 计算机组成原理练习题
- 健康教育 小论文,上课记得一些笔记
- 互联网+服装行业公司创业项目商业计划书 - 图文
- 管理学原理复习题(整)
- 天融信防火墙NGFW4000配置手册
- 社区卫生服务中心发展趋势分析
- 水彩绘画技法
- 三年级数学(上册)“运用倍的知识解决问题”教案
- 15春福师《大学英语(预)》在线作业一 答案
- 岗位职责之应急预案小组的职责
- 证券投资学—丁瑾—国贸五班
- 每天上下午放学前5分钟安全教育情况2016秋 - 图文
- 党员个人整改措施
- 任务型教学设计
- 2018年电大高等数学基础期末考试试题及答案
- 跨文化沟通
- 三类人员考试复习题