Delphi 6 新特性
原著:Borland Corporation
翻译:Musicwind®
开始日期:2001-07-13
结束日期:2001-07-14 (完成VCL单元变化及特性)
声明:
以下文章的内容取自Delphi 6附带的帮助文件。
版权所有Borland Corporation。
翻译此稿事先没有得到Borland的批准,鲁莽之处,恳请Borland多多原谅。
有什么新鲜的?
Delphi 6新增了一些特性并增强了原有的功能,主要有以下几个方面:
IDE(整合开发环境)
Internet
XML(扩展标记语言)
Compiler(编译器)
COM/Active X
Database support(数据库支持)
CORBA
Actions(动作)
Custom Variants(可定义的可变类型)
VCL 单元和特性
RTL单元和特性
Cross-platform development(跨平台开发)
Translation tools(翻译工具)
Deployment changes(发布机制)
Help system extensibility(扩展的帮助系统)
注意:某些特性不是所有Delphi版本都有。
VCL单元及特性
新的VCL单元以及新的特性(所有版本)
新增组件:
TLabeledEdit
TLabeledEdit是ExtCtrls.pas单元中新增加的,它演示了如何使用子组件。TLabeledEdit是一个带有标签的编辑控件。标签(Label)是这个控件的属性之一。
TValueListEditor
ValueListEditor 是一个自定义的栅格组件,它使用TStrings保存键/值配对。它的工作方式类似于对象检视器(Object Inspector)。
TComboBoxEx
TComboBoxEx是一个新的组合框控件,它允许在列表文字的旁边出现图片。
TColorBox
TcolorBox是一个新的组合框组件,用来选择各种颜色。
改进的特性包括:
大多数窗口控件(WindowControl)都发布了以下Bevel相关属性:
BevelEdges
BevelInner
BevelOuter
BevelKind
BevelWidth
子组件(Subcomponents)
现在,组件可以拥有创建子组件的其他组件。举例来说,一个组件可以有一个组件引用的属性,这个被引用的组件,可以是内部的(也就是一个子组件),也可以是外部的(普通的组件引用)。如果引用的是内部的组件,则这个子组件的不被Form所拥有,而是被放置在Form上的组件所拥有。这意味着组件可以将其内部的子组件发布出来,并且能够被正确的流化。并且,对象检视器已经被修改为支持查看组件内部的子组件属性(比如Font属性)。要创建一个有子组件的组件,需要调用TComponent.SetSubComponent方法。
可发布的接口属性(Publishable interface properties)
接口属性(该属性的类型是一个接口)现在已经可以被发布,当且仅当这个接口的实现的类是一个可以流化的组件。
这意味着现在你可以在对象检视器中看到接口类型的属性,并且将会出现一个支持此接口的组件列表以供选择。
新增单元及变动
CheckLst.pas
TcheckListBox增加了几个新的属性,包括AutoComplete,HeaderColor以及HeaderBackGroundColor。
Classes.pas
TList有一个新的Assign方法,不仅完成拷贝功能,也支持一些简单的集合操作。
TCollection新增两个受保护的方法,用来允许派生的类对于增加和删除条目的操作作进一步的处理。这两个新方法是Added和Deleting,两者都没有缺省的实现。为了保持TCollection的精简,没有增加OnAdded和OnDeleting事件。然而,在派生类中却很容易实现这些。此外,TCollection新增一个Owner属性以便对拥有者进行标识。
TStringList新增属性CaseSensitive(大小写敏感),允许你控制子串列表的各项操作(排序,匹配)是否大小写敏感。
TDataModule从Forms单元移到现在这个单元中(Classes.Pas),去处了对可视化控件的依赖。这使得你可以在不包含用户界面的情况下写出更小的服务段应用。
Thread新增FatalException属性,以标识任何导致线程正常运行的异常。
TStream重载了Seek(搜索)函数,允许Int64类型的值来标识位置。派生的类可以覆盖其中一个重载,但不能覆盖所有。
TinterfacedPersistent是一个新的持久对象的基类,不是组件,但是可以实现接口。
ComCtrls.pas
TtreeView的CreateTreeNodes方法是新增加的。
简单的节点的创建,并且增加了一个事件,使得Tree的使用这不必为了要覆盖节点的类而去重新创建一个派生类。并且AddNode也作了修改,让你可以将你想要加入的节点(任何类型)传递给它。
增加一个OnAddition事件,该事件在节点被增加时触发。
TreeView的排序Api作了增强(功能上)和简化(使用上)。现在你可以对子树进行递归排序,对顶层节点进行非递归的排序。TCustomTreeView和TTreeNode类现在对AlphaSort和CustomSort提供了一致的定义,并且这些方法同时被增加到TTreeNodes中。所有的改动都是后台的,与前一版本保持兼容。
增加MultiSelect(多选)相关四个属性以及八个方法。
TListView新增了CreateListItems方法,该方法与TTreeView的CreateTreeNodes类似。
TStatusBar-可调整大小的夹子现在可以显示,即使状态栏的父亲不直接是Form。只要状态条的右下角处于Form的右下角位置,则该夹子显示。
TDateTimePicker新增Format属性,用于控制日期值的显示方式。
THeaderControl新增许多新的属性和事件以支持列的拖放。一个新属性HotTrack允许当用户的鼠标在顶部区域上停留时,该区域以高亮显示。
TToolBar新增Menu属性,可以自动在工具条上添加与Menu的菜单项对应的许多按钮。当用户使用定制对话框来定制工具条时,会有一系列的事件触发。
Contnrs.pas
Last(最后)和First(最先)两个函数(属性)被增加到TObjectList,TComponentList以及TClassList中。这些函数的返回值依类的不同而不同。
TStack(栈),TQueue(队列),TObjectStack(对象栈)以及TObjectQueue(对象队列)的Push现在改为一个函数,简单的返回被推入到栈(或者队列)中的对象。就像推入,然后查看一样。当要推入在推入时刚创建的对象时,这一点非常有用(译者注:其实这一点,Borland应该早就考虑到才是!)。
TBucketList和TObjectBucketList是简单的哈希表。
Controls.pas
TCustomListControl是一个新的公用基类,用于表达一组条目的列表控件(比如组合框,列表框和列表视图等)。它引入了一些新的方法用于操纵将要被子孙类继承的列表。
TDragObjectEx,TDragControlObjectEx以及TDragDockObjectEx是三个新的拖拽对象,拖拽操作结束后,它们可以自动释放。他们对应于TDragObject,TDragControlObject和TDragDockObject,区别在于老的版本不能够在拖放操作完成时自动释放。
TControl新增两个方法:ClientToParent和ParentToClient,用来在父亲与子女之间换算坐标。工作方式与ClientToScreen和ScreenToClient类似。
TWinControl新增一个重载的方法PaintTo,参数改为Canvas(画布)而非HDC(设备描述表句柄)。
TModalResult被移至Forms.pas中。此外,增加以下几个支持函数:
function IsPositiveResult(const AModalResult: TModalResult): Boolean;
function IsNegativeResult(const AModalResult: TModalResult): Boolean;
function IsAbortResult(const AModalResult: TModalResult): Boolean;
function IsAnAllResult(const AModalResult: TModalResult): Boolean;
function StripAllFromResult(const AModalResult: TModalResult): TModalResult;
DbCtrls.pas
TDBLookupListBox和TDBLookupComboBox新增NullValueKey属性,允许用户使用空值(Null)赋值。
TDBComboBox新增AutoComplete(自动完成)和AutoDropDown(自动下拉)属性。
TDBListBox也新增AutoCompelete属性。
TOpenDialog新增OptionsEx属性(译者注:该属性用来设置是否出现win2000特有的位置工具条),同样,保存对话框也新增此属性。
ExtCtrls.pas
TImage-Proportional(比例)属性被增加,用于控制图像的高宽比而不论图像控件的尺寸如何。
Forms.pas
TApplication(以及TApplicationEvents)新增OnSettingChange事件,用来通知系统设置的改变。
TForm新增AlphaBlend,AlphaBlendValue,TransparentColor以及TransparentColorValue等属性以支持分层的Form。
TScreen提供了获取桌面工作区大小的一系列属性(WorkAreaRect,WorkAreaTop,WorkAreaLeft,WorkAreaHeight,WorkAreaWidth)。另外,还有一系列的新方法允许你定位哪个监视器更加与点,矩形,或者窗口相匹配。
TMonitor扩展了多监视器的支持,提供了当前的主监视器,WorkareaRect以及BoundsRect等属性。
新增AutoDragDocking(自动停靠)支持。这一特性允许你关闭应用程序的自动停靠功能。另外,在Delphi的选项设置对话框中允许你修改这么一个标志。
TModalResult声明被移到Control.pas单元中。
Graphics.pas
新增TFontRecall, TPenRecall 和 TBrushRecall三个新类,允许你快速存取font(字体),pen(画笔)和
brush(刷子)。他们均从TRecall(在Classes单元中声明)派生而来,TRecall需要与TPersistent一起使用。
系统颜色经过排序便于查找。
在原先16种颜色的基础上新增4个:
clMoneyGreen
clSkyBlue
clCream
clMedGray
ImgList.pas
Draw,DrawOverlay和GetIcon方法均被加上Overload(重载)标记,便于你覆盖图像列表的属性设置。
IniFiles.pas
Ini文件开始支持使用流读写二进制数据。
TMemIniFile支持控制子串是否大小写敏感。
THashedStringList是一个新的TStrings的派生类,使用内部的哈希(杂凑)表提高访问速度。
Masks.pas
EditMask(掩码编辑框)和文本使用自定义类型因此他们的属性编辑器更加有用。
Menus.pas
TMenuItem增加一个AutoCheck(自动标记)属性,用来标记当用户点及菜单条目时,是否自动在已经标记和未标记之间切换。
Registry.pas
TRegistry开始支持使用流读写二进制数据。
StdCtrls.pas
OnCloseUp和OnSelect事件被增加到TCustomComboBox中(TComboBox也一样)。OnCloseUp事件在组何况的下拉列表关闭时触发(与OnDropDown触发的时机相反)。OnSelect在列表的东西被选中时触发(或者当上下滚动可选值时使得组合框的内容被改变时)。组合框新增AutoCompelete属性,缺省为True。
TListBox新增对两个风格的属性:lbVirtual和lbVirtualOwnerDraw。两个风格用于支持虚的列表框,即不保存任何条目。通过设置Count属性可以指定条目的个数,然后在OnData,OnDataFind,和OnDataObject事件中提供条目(以及相关的对象)。
TypInfo.pas
现在调用对象的GetPropInfo方法是安全的了。假如对象没有任何RTTI信息,则简单的返回nil。
增加FreeAndNilProperties。它将释放(free)并且置空(nil)支持RTTI的对象的所有对象属性。注意它将对所有的对象,包括引用的对象进行此项操作,所以最好先将被引用的对象释放,置空。