Delphi_中DBGridEh的用法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
先介绍表格EXDBGird,因为继承DBGridEh,原本就是继承DBGrid 的,但DBGridEh 功能更强,就沾沾光吧,这部分就不说了,下面介绍的功能或未实现,但先写出来。
DBGridEh是要交费的,请自觉交费。
ShowID ------显示记录号,options-dgIndicator同时为true
IDAlignment------显示记录号对齐方式
IDFont------显示记录号字体
目前为止未见到完美显示记录号的数据表格,这是本人制作此控件的目标,
新版的记录号是自行计算和维护的。
ShowRecID------未实现,取代与记录号有关的功能
------Alignment对齐方式
------Font字体
------Visible是否显示
ShowRecCount------在左下角现实总行数,FootrRowCount必须大于等于1
------Color背景色
------Font字体
------Visible是否显示
------(Alignment)与记录号共用
LeftRightRoll------按左右键移动光标会滚到上或者下一行
CHNCurrencyStyle-----中国式财务金额栏,新版重新设计与网内流行的设计有区别
------Color背景色
------Currency字体
------CurrencySymbol货币符号
------CurrencySymbolAligned货币符号对齐方式,设为true时总在最左列
------CurrencyTitle标题
------CurrencyTitleFont标题字体
------DecimalNumber小数位数
------DecimalSeparatorColor小数分隔线的颜色
------GridLineColor间隔线颜色
------GridLineWidth间隔线宽度
------kilobitSeparatorColor千位线颜色
------Margin数字与相邻间隔线的距离,可以设为负数,让间隔线更密
------NegativeColor负数的颜色
------NegativeFont负数的字体
------ShowCurrencyTitle是否显示标题,可能要设置表格的TitleHeight
------ShowNegativeColor是否使用负数颜色
------ShowNegativeFont是否使用负数字体
------ShowNegativeSign负数是否显示负号
------TextLayout数字对齐方式
------ZeroEmpty数据为0时是否显示
要显示中国式财务金额栏,还需要在表格的Columns属性选择一个字段,
将DisplayCHNCurrency设为真,把MaxWidth也设置一下,以限制宽度。
DrawFocusRect------激活时是否显示虚线框,版没特别做出来的
功能,一个表格设置禁止之后,窗口里面其它表格都会禁止显示。
其它一些属性
AutoFitColWidths------自动调整列宽
EvenRowColor,OddRowColor------显示单双行颜色,经过改进,在插入数据
的状态下,仍能正常显示单双行颜色,因为是从自己计算的记录号推算的。
OptionEh------DBGridEh的一些设置
------dghFixed3D控制标题的3D效果
------dghFitRowHeightToText让行高紧密些
------dghEnterAsTab回车键具备Tab键下一格功能,经过改进,Enter键
移到下一格会避开禁止修改的列,例如显示计算字段的列,在表格的右下
角时,按Enter键会新增空行。
与Shift同时按下,移到上一格。
dghRowHighlight------当前行显示高亮度
其它功能
TAB键------一般Tab键可以在窗口各控件间穿梭,进入表格之后被俘获,只能在表格的格子间移动,经过改进,Tab键可以再次跳出表格的格子,重新
回到窗口的其它控件。
在表格内会避开禁止修改的列。
Enter键------见上。
方向键------避开禁止修改的列,在表格的右下角时,按右方向键会新增空行。
翻页键------在表格底部,按下翻页键时会新增空行。
没有数据------本表格没有数据时,自动出现空行。
Insert------插入数据,插入的数据自动移到表格底部,这是数据集决定的Delete------出现删除数据对话框,用鼠标在Indicator上按鼠标左键可选择多行,按下Delete键即可删除多行数据,并显示删除进度,允许中止删除。
嵌入控件说明,本表格可以真正嵌入专用的控件,编程时要将这种控件直接放在表格里面,不要放在外边,想在那些列显示控件,可设置控件的GridFields 属性,为相应的字段,表格会自动识别处理。
DBGridEh的用法
DBGRIDEH 是Enlib 组件包中的组件之一。
Enlib 组件包是一位俄国人为增强Borland系列开发工具功能而开发的第三方组件,它具有界面友好、功能强大、
开发效率高、、快速制作预览/打印简单中国式报表等特点。
因此,一推出即受到广大Borland程序员的青睐。
目前这个版本支持Borland Delphi versions 4,5,6&7 和 Borland C++ Builder versions 4 & 5 ,可极大地提高数据库应用系统客户端的性能。
许多商品软件如《速达2000》等都使用了该组件。
下面本人将使用该组件在实际系统开发过程中的经验总结如下。
组件包中最重要而且功能最强大的莫过于dbgrideh组件,本文介绍的所有实例均在Delphi 7开发环境下调试通过。
一、DBGridEh(增强型表格组件)功能详解
DBGridEh组件无论在外观上还是功能上都非常类似Borland开发工具中现有的dbgrid组件,它除了提供 dbgrid组件的全部功能外,还增加了下列新功能:
●任意选择多行、列或矩形区域的数据.
●为多列标题设定共同的父标题行.
●表格底部(Footer)区显示求和、计数和其它统计信息.
●自动调整组件宽度与客户区域等宽.
●设置标题行、数据行的高度.
●超长的标题行、数据行文本自动折行处理.
●标题行可作为按钮使用,并可选择是否显示排序标志符(▽降序△升序).
●点击列标题可对当前列自动排序而无需编写代码.
●能够自动设置删除超长文本显示不下的多余部分,并以省略号(…)代替.
●自动搜索字段(Lookup)数据单元格以单、多列字段下拉列表形式显示.
●自动搜索字段(Lookup)数据单元格可进行增量搜索.
●可锁定任意列数在屏幕水平方向不滚动.
●日期时间控件DateTime picker 可支持TDateField and TDateTimeField两种日期格式.
●根据字段不同值显示关联的ImageList 对象图片组中的图片.
●隐藏任意列.
●显示3D风格的数据区、表尾区和锁定滚动列,制作3D外观表格.
●显示Memo类型字段值.
●除BOOLEAN型数据外,其它数据类型也可以检查框( checkbox )形式显示数据.
●使用专门的函数和过程来存取以reg或ini文件格式保存的表格布局(包含各数据列表、数据列访问顺序、列宽、索引标识、行高等信息)文件。
●通过设置数据单元格的hint和ToolTips属性,当移动鼠标到该单元格时,可以显示单元格容纳不下的文本内容.
●将组件中数据导入/导出到Text, Csv, HTML, RTF, XLS 和内部数据等多种格式的文件中.
DBGridEh组件主要属性见下表(其它属性参见dbgrid):
DBGridEh组件事件基本与DBGrid相同,在此不再赘述。
二、应用实例
组件包安装成功后,在系统的组件面板中会显示“enlib”组件包标签(如图1),添加DBGridEh到窗体的方法与其它组件一样。
在窗体中添加该组件后,请跟我一起来实现图2的一些特殊效果,具体属性设置请参考属性表的说明。
A、定制标题行
1、制作复杂标题行
标题行可设为2行以上高度,并可以为多列创建一个共同的父标题行。
为实现这个效果,需在各个列标题属性中以“|”分隔父标题和子标题,如办公用品包括代码和名称两部分,具体属性设置如下:
usemultititile=true;
titlelines=2
[0]. := '办公用品
代码';
[1]. := '办公用品
名称';
2、标题行显示图片
实现图2中的购买人标题行显示效果。
首先添加一个imagelist组件img1并在其中添加一组bmp,ico格式的图片。
然后将 DBGridEh的TitleImages设置为img1.最后在需要显示图片的列标题的imageindex中设置需要显示的img1中图片的序号。
按F9执行一下程序,是不是很酷!
3、自动显示标题行的升降排序标志符(▽降序△升序)并做相应排序
DBGridEh组件可以在标题行单元格中显示小三角形升、降排序标志符图片,在运行时可点击标题行,图片自动切换并做相应排序。
具体属性设置如下:
OptionsEh=dghAutoSortMarking
SortMarkedColumns 为当前排序列可在运行时使用.
然后在该列的ontitleclick事件中添加代码:
procedure (Sender: TObject; ACol: Integer; Column: TColumnEh);
var
sortstring:string; 6、锁定多列不滚动
当表格水平方向信息在一屏幕显示不下时,此项功能非常有用。
例如,工资表格中包含姓名、基本工资、绩效工资等信息一屏幕显示不下,需要通过移动水平滚动条显示下一屏信息。
如果不锁定关键字段列如姓名,则移动到下一屏时就不知道此条记录对应的姓名。
因此,在实际应用中经常需锁定多列不滚动。
例:姓名字段为表格第二列,则设置FrozenCols=2. 这样当一屏幕显示不下,通过移动水平滚动条显示下一屏信息时,表格前两列不滚动,作为参照列。
D、导入/导出数据
导入/导出数据在实际处理过程中是比较烦琐的。
但是提供了一系列函数让你轻松实现此功能,而且支持的文件格式很多:Text, Csv, HTML, RTF, XLS 和内部数据格式。
除此之外,还可对任意选择的数据区域进行操作。
函数如下:
Pascal:
SaveDBGridEhToExportFile(TDBGridEhExportAsText,DBGridEh1,'c:\temp\',F alse);
C++:
SaveDBGridEhToExportFile(__classid(TDBGridEhExportAsText),DBGridEh1," c:\\temp\\",false);
说明:其中 false参数表示导出的是选中的局部数据区域数据,true则为整个表格数据。
例:将当前表格中数据导出为EXCEL等格式文件。
在窗体中添加一个SaveDialog组件和“导出”按钮B_exp,在“导出”按钮的click 事件中添加如下代码:
procedure (Sender: TObject);
var
ExpClass:TDBGridEhExportClass;
Ext:String;
begin
:= 'file1';
if (ActiveControl is TDBGridEh) then
if then
begin
case of
1: begin ExpClass := TDBGridEhExportAsText; Ext := 'txt'; end;
2: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
3: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end;
4: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
5: begin ExpClass := TDBGridEhExportAsXLS; Ext := 'xls'; end;
else
ExpClass := nil; Ext := '';
end;
if ExpClass <> nil then
begin
if UpperCase(Copy,Length-2,3)) <> UpperCase(Ext) then
:= + '.' + Ext;
SaveDBGridEhToExportFile(ExpClass,DBGridEh1,,False);
通过笔者上述介绍,想必你已经对Enlib组件包产生好感而且越越欲试了,那就赶快下载使用吧。
但是,使用一段时间并且喜欢上它后,你又有新的问题产生了,那就是为了保持界面风格一致,能否将已经开发完成的应用程序中的DBGrid组件能否转换为DBGridEh组件,进行一次彻底革命?答案是肯定的。
尽管 DBGridEh 并不是继承于CustomDBGrid组件, 但是DBGridEh和DBGrid它们之间有许多相同
之处.因此可以相互转换。
具体步骤如下:
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、重新编译应用程序。
以上只是本人在实际程序开发过程中使用dbgrideh组件的一些体会,当然其功能还远不止这些。
欢迎朋友与我做进一步交流。
【原作者联系方式】
Ehlib的颜色控制及打印
很多说根据条件在数据网格中显示不同颜色的说法都是在DrawColumnCell事件里,这样显示没有问题,但在 ehlib中如果想打印出来可就不行了。
ehlib提供了GetCellParams事件,可以显示和打印
//只能显示,不能打印
procedure (Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
var
OldColor,OldColumnColor:TColor;
v:TColCellParamsEh;
begin
{ OldColor:= ;
if = '填制调单时间') then
if '填制调单时间').AsDateTime >'应发货时间').AsDateTime) then
begin
illColCellParams()
if = '移交时间') then
if '移交时间').AsDateTime >'应移交时间').AsDateTime) then
:= clRed;
if = '填制运输单时间') then
if '填制运输单时间').AsDateTime >'填制调单时间').AsDateTime) then
:= clRed;
(Rect, DataCol, Column, State);
}
end;
//可以显示,可以打印
procedure (Sender: TObject;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
var
OldColor,OldColumnColor:TColor;
v:TColCellParamsEh;
begin
sDateTime >'应发货时间').AsDateTime) then
:= clRed;
if = '移交时间') then
if '移交时间').AsDateTime >'应移交时间').AsDateTime) then
:= clRed;
if = '填制运输单时间') then
if '填制运输单时间').AsDateTime >'填制调单时间').AsDateTime) then
:= clRed;
if = '实际到货时间') then
if '实际到货时间').AsDateTime >'要求到货时间').AsDateTime) then
:= clRed;
All below text in equal degrees pertains as to TDBGridEh component as to TDBGrid component.
A TDBGridEh control lets you view and edit records in a dataset in a tabular
grid format.
TDBGridEh does not story data in in itself, it only show data from dataset via TDataLink object. Every database control have internal TDataLink object to interaction with dataset. You can connect TDBGridEh to dataset using DataSource property. If you already use TStringGrid component you can see that data shows in TStringGrid and in TDBGridEh very similarly, but mechanism that use to show data in TStringGrid and in TDBGridEh very different. In TStringGrid count of rows is equal of rows in array of strings while in TDBGridEh (and TDBGrid) count of rows always not more then count of visible rows and although vertical scrollbar can display thumb position regarding the count of record in dataset it take info not from grid but directly from dataset. TDataSet don't allows us to work with data as with array of data . we can not quickly get value of the field from certain record, some types of dataset have not even such notion as record number (in such datasets we can only know that we inhere in the begin of dataset or in the end of its or somewhere between, in that case DBGrid shows vertical vertical scrollbar only in three positions). But to have possibility to draw several record simultaneously TDataLink object allows to have buffer of records (record buffer window) with quick readonly access. DBGrid use this possibility of datalink and set size of record buffer window equal of count of visible rows in grid. We can not control what record must be first in this buffer, DataLink itself scroll record buffer window then we navigate through the dataset and it control the scrolling of record buffer window as that the active record as always in record buffer window. It is a reason why the active record change position when users change thumb position of vertical scrollbar using mouse.
TDBGridEh和纵向滚动条
If you works with different type of dataset you can notice that for some type of dataset DBGrid show vertical scrollbar validly but for over vertical scrollbar have only three position independently of record count in dataset. To set vertical scrollbar accomodation DBGrid use RecordCount and RecNo property of DataSet component. But some dataset and even same dataset under some condition holds -1 in RecordCount and RecNo. DataSet function IsSequenced indicates whether the underlying database table uses record numbers to indicate the order of records. When IsSequenced returns True, applications can safely use the RecNo property to navigate to records in the dataset and DBGrid use RecNo property to show thumb position in vertical scrollbar. But when IsSequenced returns False DBGrid can not define current record position and show vertical scrollbar in three positions. DBGridEh component have possibility to show proportional scrollbar for no sequenced dataset. To do it need to activate SumList and create list of record bookmars. Set to True and to True. SumList will
run through dataset and create list of record bookmarks, if you use client/sever technology to access database SumList will force dataset to fetch all records, so it operation can take much time. Keep in mind that VirtualRecords will work only for full relationship bookmarks dataset, it means that function has to return > 0 if bookmark1 > bookmark1 . record to which indicates bookmark1 have to be after record to which indicates bookmark1), = 0 if bookmark1 = bookmark1, < 0 if bookmark1 = bookmark1. TBDEDataSet in most cases support full relationship bookmarks.
定制网格标题
复杂标题
TDBGridEh 允许在多列上创建标题,例如:
设置属性为 True 并且填充字段的标签或列标题的标题,可以使用下面的规则:字段标签中的文本部分或列标题必须由几部分组成,并且用 "
" 分割,几个列的每一个通用部分都设置为相同。
其它字段或标题必须在相应的部分包含同样的文本。
例如:
:= 'Title1
SubTitle1';
:= 'Title1
SubTitle2';
或
[0]. := 'Title1
SubTitle1';
[1]. := 'Title1
SubTitle2';
按钮式标题
设置为 True可以强制标题单元为按钮式。
写 OnTitleBtnClick事件来控制用户单击标题单元时的操作。
在标题中显示位图
To show bitmap in titles instead of caption use TitleImages property of TDBGridEh and ImageIndex property of TColumnTitleEh.
自动用位置标识排序标题.
TDBGridEh allows to show special sortmarking bitmaps (small triangles) in the right part of title cell. In order to automatically marking title by sortmarking bitmaps add dghAutoSortMarking to OptionsEh property. Add dghMultiSortMarking too in order to allow sortmarking several columns simultaneously. Set to true for titles which will have possibility to
change sortmarkers at run time. At runtime clicking on title will change sortmarking. Holding Ctrl key allows to mark several columns simultaneously. After user change sormarking grid call OnSortMarkingChanged event. You can write this event to change sorting and reopen in dataset. Use SortMarkedColumns property to access to sortmarked columns.
标题属性的默认值
使用来设置标题属性的默认值。
定制网格页脚
页脚以及统计值
TDBGridEh allows to show special row (footer) or rows at bottom part. Use FooterRowCount property to specify the number of footer rows in the grid. Use Footer or Footers property of TColumnEh object to specify information which need to show in footer cells. Footers property useful then you have more then one footer rows. Footers is a collection of TColumnFooterEh objects where information from i-th aliment of collection will be show in i-th cell of footer column. In footer cell, it is possible to show: Sum value for specified field, record count, value of a specified field or static text. Use property or to specify which type of value will be show in footer cell. If ValueType = fvtStaticText, then set the property Value to specify text which need to show. If ValueType = fvtFieldValue, then you need to set property FieldName to specify field, value of which need to show. To force grid to calculate total values need to activate SumList := True). Set ValueType to fvtSum and grid must to show sum value of the column field in the footer cell, you can also specify to calculate total value of the other field. Set ValueType to fvtCount to force grid to show count of records in the footer cell.
定制网格数据单元
在数据单元中显示字段值为图形。
TDBGridEh allows to show bitmaps from TImageList component depending on field values. To show bitmaps depending on field values need: Fill list of field values to property (every value in separate line) and set property to ImageList control that has the bitmap in according index. Set to index of bitmap that will be shown if field's value does not correspond to any value in KeyList (for instance you can set index of image for Null field value). At run time you are not allowed to edit bitmap in column cell. Use blank key and mouse click to set next value from to the field; Shift-blank key and Shift-Mouse click to set previous value from . Set to True have allows to change value on mouse double click.
检查框式的逻辑及非逻辑值
Grid automatically shows checkboxes for boolean field. To show checkboxes for non boolean fields fill first line of property that corresponds to the checked state of the checkbox, second line - non checked state, and set ptoperty to True. Line of KeyList can represent more than one value in a semicolon-delimited list of items.
数据行高度
使用 RowHeight 和 RowLines 属性来指定数据行高。
完整的数据行高 = 行线高度+行高。
设置 RowSizingAllowed 为 True 以允许可以在运行是使用鼠标来改变行高。
设置为True可以使数据行中文本多行显示。
如果行高>文本行,它就换行。
显示备注字段
设置 DrawMemoText to True来显示文本式的备注字段。
.
定制单元格字体及颜色
TDBGridEh 中的 Font 和 Color 属性描述了数据网格中绘制单元格的字体和颜色。
TColumnEh 中的 Font 和 Color 属性描述了指定列中绘制单元格的字体和颜色。
事件定制单元格字体及颜色
有几个事件可以让你能够在绘制单元格前定制单元格字体和颜色。
你可以写TDBGridEh的OnDrawColumnCellEvent事件句柄来在控制在网格单元中绘制数据。
你可以使用Canvas属性的方法来绘制单元格。
但是如果你只想改变字体或颜色的属性,我建议你使用下面的事件。
你可以写TDBGridEh的OnGetCellParams事件来控制在绘制数据单元以前所指定的操作。
你可以改变绘制字体及背景色。
这个事件适合你在想改变整行的字体或颜色时使用。
如果你想改变指定列中单元格的属性,你可以使用。
写这个事件用来控制在一列数据单元被重绘或编辑时的操作。
在一列数据单元被重绘以前,你可以改变绘制字体,背景色,对齐方式,图像索引,文本或检查框。
在编辑一列数据单元以前,你可以改变编辑字体,背景色,文本或只读状态。
列属性的默认值
使用 ColumnDefValues属性来设置列属性的默认值。
新创建的列将从ColumnDefValues属性中获得属性值,并且直到第一次为其指定值为止。
在网格的适当位置放置编辑器.
在下拉列表中显示几个字段。
在下拉列表中显示几个下拉字段,需要设置列的 LookupDisplayFields属性到字段的Semicolons属性来分割多个字段名。
命名为的属性必须位于LookupDisplayFields列表中。
多字段的下拉列表只能应用于下拉字段。
显示下拉方式的列
你可以通过KeyList 和 PickList 属性在相关的的字段中显示其它文本。
KeyList显示包含在字段的值而非PickList索引所包含的值。
to index of text from PickList that will be shown if field value do not contain in KeyList (for instance you can set index of text for Null field value). Set to True to change value on mouse double click.
下拉式计算器
对于 TDateField 和 TDateTimeField 字段,inplace 编辑器将显示下拉按钮以显示显示下拉计算器。
设置为 cbsNone 以禁止显示下拉按钮。
设置编辑器颜色和字体
Inplace编辑器可以设置数据单元的颜色和字体。
数据单元使用OnGetCellParams 事件来控制列的颜色和字体。
Inplace 编辑器在行高>一行的高度时自动设置为多行模式并且将列的属性 WordWrap 设置为True.
自动填充网格列宽到网格客户区
设置AutoFitColWidths为True以自动重置列宽来设置网格的宽度等于客户区宽度。
MinAutoFitWidth 属性决定网格的最小宽度,列宽将会被重新计算。
3D或平面外观
使用 OptionsEh 属性来显示/隐藏固定的3D框架,冷区,页脚以及数据行。
使用 Flat 属性来设置用平面方式显示数据网格。
从多种格式导入/导出数据到 TDBGridEh。
EhLib 的函数集可以从DBGridEh导出数据到Text, Csv, HTML, RTF, XLS以及其内部格式。
它可以保存数据到流(TStream对象)或文件。
例子
Pascal:
SaveDBGridEhToExportFile(TDBGridEhExportAsText,DBGridEh1,'c:\temp\',F alse);
C++:
SaveDBGridEhToExportFile(__classid(TDBGridEhExportAsText),DBGridEh1," c:\\temp\\",false);
EhLib 的函数集可以从 Text以及其内部格式的数据导入到DBGridEh的数据集中。
它可以从文件中读取数据或读取数据到流(TStream对象)。
其它特性
用lookup 编辑器,你可以在运行时清空(设置为Null) LookupKeyField 值。
比如选择整个文本然后按Delete键。
冷区
冷区是数据网格列集左边显示的不可滚动的区域。
与固定列不同的是,冷区的列可以获得编辑焦点。
可以通过设置FrozenCols属性来设置右边不可滚动的列集。
增量搜索
TDBGridEh 允许用户在网格列中实现特定的“增量”搜索。
当用户进入增量搜索时他可以显示字符以及网格,并且在当前的列中查找文本。
使用 dghIncSearch 和dghPreferIncSearch的值(在OptionsEh 选项中) 在数据网格中操作增量搜索。
dghIncSearch 值允许在数据网格中进行增量搜索。
运行时你能够使用下面的键进行增量搜索:
Ctrl+F - 开始增量搜索。
Ctrl+Enter - 查找下一个匹配记录。
Ctrl+Shift+Enter - 查找前一个匹配记录。
如果OptionsEh选项中的 dghIncSearch 是只读的,那么网络将自动设置增量模式在第一次按键以及秒后返回普通模式。
dghPreferIncSearch 值决定网格设置自动增量搜索模式在第一次按键时替代单元编辑。
水平或垂直滚动条
使用 VertSctollbar, HorzSctollbar 属性来显示/隐藏以及跟踪水平或垂直滚动条。
多选
TDBGridEh 允许在选定的区域上进行选择记录,列以及矩形区域等操作:
允许多选会影响下面这些属性:
Options选项中的 dgMultiSelect属性 - 设置是否允许多选。
Options选项中的dghClearSelection 属性- 设置在用户移到下一个单元时是否清除已选记录。
Options选项中的EditActions属性 -设置用户可以在已选记录上执行哪些操作(比如,拷贝,剪切,删除,粘贴,全选等)。
Options选项中的AllowedSelections属性-设置允许选定记录的类型(比如,行,列,矩形区域等)。
Options选项中的Selection属性-设置一个当前的多选状态,已选记录,列或矩形区域以及存取它们的属性和函数。
从注册表或ini文件中保存或恢复网格和列的层次。
TDBGridEh 有一个常规设置来从注册表或ini文件中保存和恢复网络以及列的层次:
RestoreColumnsLayout - 从注册表中恢复列的次序,宽度,排序标志。
RestoreColumnsLayoutIni - 从ini文件中恢复列的次序,宽度,排序标志。
RestoreGridLayout - 从注册表中恢复列的次序,宽度,可视,排序标志,排序索引或行高。
RestoreGridLayoutIni - 从ini文件中恢复列的次序,宽度,可视,排序标志,排序索引或行高。
SaveColumnsLayout - 保存列的次序,宽度,排序标志到注册表中。
SaveColumnsLayoutIni - 保存列的次序,宽度,排序标志到ini文件中。
SaveGridLayout - 保存列的次序,宽度,可视,排序标志,排序索引或行高到
注册表中。
SaveGridLayoutIni - 保存列的次序,宽度,可视,排序标志,排序索引或行高到ini文件中。
当前版本的TDBGridEh不支持的特性:
这个版本的TDBGridEh 不支持下面的特性:
TDBGridEh 不能设置每一个数据窗口中单独行的行高。
TDBGridEh 不能象TreeView那样工作。
它不能拥有节点和枝叶。
TDBGridEh 不能横向或纵向合并数据单元。
将已存在的TDBGrid组件转换为TDBGridEh组件:
尽管TDBGridEh并不是从TCustomDBGrid组件继承而来的,但是在TDBGridEh和TDBGrid中还是有一些相似的属性。
它允许仅用一点点代价来转换已存在的TDBGrid组件到TDBGridEh。
可以按照下面的提示来转转换已存在的TDBGrid组件到TDBGridEh:
在Delphi的IDE中打开包含有TDBGrid组件的应用程序。
设置视图方式为文本方式(Alt-F12)。
将所有的TDBGrid对象改名为TDBGridEh('比如,将object DBGrid1: TDBGrid'改为 'object DBGrid1: TDBGridEh')
重新编译你的应用程序。
―――――――――――――――――――――――
解决域中用户空密码设定--来自网络
2009-12-26 15:56
在域控制器上的开始菜单中打开“运行”,输入后回车,即打开活动目录的用户和计算机管理控制台。
在域节点右键,进入属性,打开组策略选项卡,在里边找到Default Domain policy这个GPO选中他,点击下面的编辑,现在就会打开组策略编辑器,在这个组策略编辑器中找到一下路径:计算机配置-WINDOWS设置-安全设置-帐户策略-密码策略。
在这个路径下找到“密码必须符合复杂性要求”设置为禁用,“密码长度最小值”设置为0。
这样你就可以创建空密码的用户帐户了(当然在这里你也可以为你的域设置你自己需要的密码策略),完成了以上设置后并没有完,还有最后一步,就是在开始菜单的运行中输入“GPUPDATE
/FORCE”这个命令。
现在你试一下就可以创建用户帐户了,而且密码不受限制了。