1. 属性。
2. 使用统计栏功能
(1) 设置统计栏行数,将DBGridEh.FooterRowCount:= 1
(2) 设置激活统计功能,将DBGridEh.SumList.Active:= True;
(3) 选择所统计字段的统计方式,如将Columns[n].Footer.ValueType:= vtSum;
(4)
3. 复杂标题.
(1)标题行可设为2行以上高度,并可以为多列创建一个共同的父标题行。为实现这个效果,需在各个列标题属性中以“|”分隔父标题和子标题,如办公用品包括代码和名称两部分,具体属性设置如下:
usemultititile=true;
titlelines=2
DBGridEh.Columns[0].Title.Caption := '办公用品|代码';
DBGridEh.Columns[1].Title.Caption := '办公用品|名称';
(2)标题行显示图片
首先添加一个imagelist组件img1并在其中添加一组bmp,ico格式的图片。然后将DBGridEh的TitleImages设置为img1.最后在需要显示图片的列标题的imageindex中设置需要显示的img1中图片的序号。
4. 实现 DBGridEh 隔行分色显示
procedure TForm1.DBGridEh1GetCellParams(Sender:TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor;State: TGridDrawState);
Begin
if DBGridEh1.SumList.RecNo mod 2 = 1 then
Background := $00FFC4C4
Else
Background := $00FFDDDD;
end;
5. DBGridEh 在某些条件下某行显示特定颜色
procedure TForm1.DBGridEh1GetCellParams(Sender:TObject; Column: TColumnEh; AFont: TFont; var Background: TColor; State:TGridDrawState);
begin
//在name 字段值为 aaa 的行设置行背景色(ado 设置情况下)
if ADOQuery1.FieldByName('name').AsString = 'aaa' then
Background :=$00FFC4C4
//在 xm 字段值为 Li ming 的行设置行背景色(bde 设置情况下)
else if DBGridEh1.DataSource.DataSet.FieldByName('xm').AsString = 'Li ming' then
Background := $00FFC4C4
Else
Background := $00FFDDDD;
end;
6. 在dbgrideh中允许选择多行,如何知道哪些行被选中?是个BOOKMARK类型的属性。
SelectedRows: TBookmarkList
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: Integer;
s: string;
begin
ifDBGrid1.SelectedRows.Count>0 then
withDBGrid1.DataSource.DataSet do
for i:=0 toDBGrid1.SelectedRows.Count-1 do
begin
GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
for j := 0 toFieldCount-1 do
begin
if (j>0) then s:=s+', ';
s:=s+Fields[j].AsString;
end;
Listbox1.Items.Add(s);
s:= '';
end;
end;
7. 显示自动提示
设置DBGridEh控件的showhint属性为true,然后设置需要显示自动提示的字段的ToolTips属性为True。
8. 自动排序。
设置OptionsEh.dbgAutoSortMarking为true,字段的Title.titleButton属性为true。
9. 根据不同字段值显示相应的小图片
如根据库存材料的不同状态在数据单元格中显示相应图片,具体设置如下:
添加一个imagelist组件img1并在其中添加一组bmp,ico格式的图片。然后将需要显示图片的列的imagelist属性设置为img1;在keylist属性中添加实际数据存储值,一行为一个值,切记一定要与imagelist中图片顺序一一对应,否则会张冠李戴,面目全非。还可在picklist中添加提示信息,也要求是一行为一个值,并设tooltip为true,那么,运行时当鼠标移动到该数据单元格时在显示图片的同时还显示提示信息,怎么样,功能够强大吧!可使用空格键或鼠标切换下一张图片,图片切换的同时也改变了实际存储数据值。也可通过shift+空格或鼠标切换为上一张图片。这样就实现了上下两个方向图片切换
10. 显示字段的单列或多列下拉列表
(1)单列:设置好DBGrid中该字段的PickList字符串列表、初始的列表行数DropDownRows即可。
(2)多列:根据单元格字段值显示与其相关的其它表字段内容。首先需在当前表中新建立一个lookup型字段,把DBGriEh相应的列指向lookup字段,然后,设置相应列的DropDownBox的各项属性并设置改列的lookupdisplayfields属性(显示的列,用分号隔开),而且返回字段必须作为其中的第一项。
具体设置如下:
1) 放置两个Query组件和一个DataSource组件,其中一个用于查询DBGridEh需要的数据,另一个用于查询关联表。
2) 在连接到DBGridEh控件的Query中,Add相关字段。并为需要添加的字段设置lookup型列,field type为lookup;设置dataset为查询关联表的Query组件,key Fields为关键字段,lookup keys为联结字段,Result Field为显示在列表中的结果字段(返回字段)。
3) 然后,将需要设置下拉列表的字段的ChachedUpdates属性设置为True,为该Query
控件设置OnUpdateRecord事件,内容可以为空,但是至少留一个“//”。
4) 放置DBGridEh控件,进行相关设置。然后添加相关字段,设置刚才添加的lookup字段的AlwaysShowEditButton为True。
5) 进行下拉列表相关属性的设置,在字段的LookupDispalyFields属性设置列表中需要显示得字段,如:
dropdownshowtitles=true
dropdownsizing=true
dropdownwidth=-1
11. 显示日历下拉列表
Date 和 DateTime类型字段值均可以此形式显示。外观与编辑框无异,当点击该单元格时,右侧会出现“▽”符号,点击之即可出现日历下拉列表,inplace 编辑器将显示下拉按钮以显示显示下拉计算器。有时不希望出现日历下拉列表,只需设置Column.ButtonStyle属性为 cbsNone即可,此方法同样适用于其它组件不以特殊外观显示的情况。
12. 3D或平面外观效果
设置flat为true则为平面外观效果.
13. 锁定多列不滚动
当表格水平方向信息在一屏幕显示不下时,此项功能非常有用。例如,工资表格中包含姓名、基本工资、绩效工资等信息一屏幕显示不下,需要通过移动水平滚动条显示下一屏信息。如果不锁定关键字段列如姓名,则移动到下一屏时就不知道此条记录对应的姓名。因此,在实际应用中经常需锁定多列不滚动。
例:姓名字段为表格第二列,则设置FrozenCols=2.这样当一屏幕显示不下,通过移动水平滚动条显示下一屏信息时,表格前两列不滚动,作为参照列。
14. 导入/导出数据
导入/导出数据在实际处理过程中是比较烦琐的。但是Enlib3.0提供了一系列函数让你轻松实现此功能,而且支持的文件格式很多:Text, Csv, HTML, RTF, XLS 和内部数据格式。除此之外,还可对任意选择的数据区域进行操作。函数如下:
Pascal:SaveDBGridEhToExportFile(TDBGridEhExportAsText,DBGridEh1,'c:\temp\file1.txt',False);
C++:SaveDBGridEhToExportFile(__classid(TDBGridEhExportAsText),DBGridEh1,"c:\\temp\\file1.txt",false);
说明:其中false参数表示导出的是选中的局部数据区域数据,true则为整个表格数据。
例:将当前表格中数据导出为EXCEL等格式文件。
在窗体中添加一个SaveDialog组件和“导出”按钮B_exp,在“导出”按钮的click事件中添加如下代码:
procedure TForm1.B_expClick(Sender:TObject);
var
ExpClass:TDBGridEhExportClass;
Ext:String;
Begin
SaveDialog1.FileName := 'file1';
if (ActiveControl is TDBGridEh) then
ifSaveDialog1.Execute then
begin
case SaveDialog1.FilterIndex of
1: beginExpClass := TDBGridEhExportAsText; Ext := 'txt'; end;
2: beginExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
3: beginExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end;
4: beginExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
5: beginExpClass := TDBGridEhExportAsXLS; Ext := 'xls'; end;
else
ExpClass := nil; Ext := '';
end;
if ExpClass <> nil then
begin
ifUpperCase(Copy(SaveDialog1.FileName,Length(SaveDialog1.FileName)-2,3)) <>UpperCase(Ext) then
SaveDialog1.FileName := SaveDialog1.FileName + '.' + Ext;
SaveDBGridEhToExportFile(ExpClass,DBGridEh1,SaveDialog1.FileName,False);
//其中false为局部数据
end;
end;
end;
15. 将存在的DBGrid组件转换为DBGridEh组件。具体步骤如下:
1、在Delphi IDE下打开TDBGrid组件.
2、通过组合键Alt-F12将form 以文本方式显示;
3、将所有TDBGrid 对象名改变为 TDBGridEh对象名,如:DBGrid1: TDBGrid改为 DBGrid1: TDBGridEh;
4、再次通过组合键Alt-F12将文本方式恢复为form 显示;
5、将form各相关事件中定义的所有TDBGrid改为TDBGrideh,如DBGrid1: TDBGrid改为DBGrid1: TDBGridEh;
6、重新编译应用程序。
16. STFilter的使用。(??????)
(1)在DBGridEh中设置local值为True(具体作用还没有体会出来- -),设置Visible为True。
(2)在Columns中的STFilter下的属性中,设置ListSource为用于取下拉列表的DataSource,ListField为取下拉列表内容的字段。
DBSumList组件可以在可视动态变化数据集中进行记录统计。但是上面的DBGridEh的统计功能并不需要这个组件。使用时先在设置DataSet关联到Query组件,然后SumCollection中设置相关的需要统计的数据字段,然后写 SumListChanged 事件来指定在被统计数据发生改变后所要做的操作。
1. 属性。
AfterGridText:表尾文字。
BeforeGridText:表头文字。
PageFooter:设置页脚。
PageHeader:设置页眉
PageFooter.CenterText:设置页脚中央的文字
PageFooter.LeftText设置页脚左边的文字。
PageFooter.LineType设置分割页脚的线的类型,例如CenterText中设置‘第&[Page]页 共&[Pages]页’,则每页下面都显示页面的页号和总共的页面数量。PageHeader属性集设置页眉。
Options:设置打印设置的默认值。
Options.pghFitGirdToPageWidth:按比例缩小表格以适应页面宽度。
Options.pghColored: 是否打印表格色彩。
Options.pghFitingByColWidth:使字段的纵向宽度适应页面大小,对应打印预览设值中的“Fits the width onone page”项目。
Options.pghOptimalColWidths:优化字段宽度使其适应其中的内容的宽度。
Title:设置插入于表格中第一行的标题。
2. 设置变量:
PrintDBGridEh.SetSubStitutes(['%[变量1]',值1],['%[变量2]',值2],...)
3. 调用方式:
PrintDBGridEh1.Preview;
1. 主要属性。
Text: 默认文字。
WantTabs:当输入Tab键时,不转移控件焦点。
WantReturns:允许在编辑框中输入回车。
17. DBDateTimeEditEh。从设置DataSource中设定的DataField中,存取的DBGrid中选定字段的日期值。