Delphi 6 新特性-VCL单元变化及特性(中文)

    技术2022-05-11  146

     

     

    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

     

    TLabeledEditExtCtrls.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增加了几个新的属性,包括AutoCompleteHeaderColor以及HeaderBackGroundColor

     

    Classes.pas

     

    TList有一个新的Assign方法,不仅完成拷贝功能,也支持一些简单的集合操作。

     

    TCollection新增两个受保护的方法,用来允许派生的类对于增加和删除条目的操作作进一步的处理。这两个新方法是AddedDeleting,两者都没有缺省的实现。为了保持TCollection的精简,没有增加OnAddedOnDeleting事件。然而,在派生类中却很容易实现这些。此外,TCollection新增一个Owner属性以便对拥有者进行标识。

     

    TStringList新增属性CaseSensitive(大小写敏感),允许你控制子串列表的各项操作(排序,匹配)是否大小写敏感。

     

     

    TDataModuleForms单元移到现在这个单元中(Classes.Pas),去处了对可视化控件的依赖。这使得你可以在不包含用户界面的情况下写出更小的服务段应用。

     

    Thread新增FatalException属性,以标识任何导致线程正常运行的异常。

     

    TStream重载了Seek(搜索)函数,允许Int64类型的值来标识位置。派生的类可以覆盖其中一个重载,但不能覆盖所有。

     

     

    TinterfacedPersistent是一个新的持久对象的基类,不是组件,但是可以实现接口。

     

    ComCtrls.pas

    TtreeViewCreateTreeNodes方法是新增加的。

     

    简单的节点的创建,并且增加了一个事件,使得Tree的使用这不必为了要覆盖节点的类而去重新创建一个派生类。并且AddNode也作了修改,让你可以将你想要加入的节点(任何类型)传递给它。

     

           增加一个OnAddition事件,该事件在节点被增加时触发。

           TreeView的排序Api作了增强(功能上)和简化(使用上)。现在你可以对子树进行递归排序,对顶层节点进行非递归的排序。TCustomTreeViewTTreeNode类现在对AlphaSortCustomSort提供了一致的定义,并且这些方法同时被增加到TTreeNodes中。所有的改动都是后台的,与前一版本保持兼容。

     

    增加MultiSelect(多选)相关四个属性以及八个方法。

     

    TListView新增了CreateListItems方法,该方法与TTreeViewCreateTreeNodes类似。

     

    TStatusBar-可调整大小的夹子现在可以显示,即使状态栏的父亲不直接是Form。只要状态条的右下角处于Form的右下角位置,则该夹子显示。

     

     

    TDateTimePicker新增Format属性,用于控制日期值的显示方式。

     

    THeaderControl新增许多新的属性和事件以支持列的拖放。一个新属性HotTrack允许当用户的鼠标在顶部区域上停留时,该区域以高亮显示。

     

    TToolBar新增Menu属性,可以自动在工具条上添加与Menu的菜单项对应的许多按钮。当用户使用定制对话框来定制工具条时,会有一系列的事件触发。

     

    Contnrs.pas

    Last(最后)和First(最先)两个函数(属性)被增加到TObjectListTComponentList以及TClassList中。这些函数的返回值依类的不同而不同。

     

    TStack(栈),TQueue(队列),TObjectStack(对象栈)以及TObjectQueue(对象队列)的Push现在改为一个函数,简单的返回被推入到栈(或者队列)中的对象。就像推入,然后查看一样。当要推入在推入时刚创建的对象时,这一点非常有用(译者注:其实这一点,Borland应该早就考虑到才是!)。

     

    TBucketListTObjectBucketList是简单的哈希表。

     

    Controls.pas

    TCustomListControl是一个新的公用基类,用于表达一组条目的列表控件(比如组合框,列表框和列表视图等)。它引入了一些新的方法用于操纵将要被子孙类继承的列表。

     

    TDragObjectExTDragControlObjectEx以及TDragDockObjectEx是三个新的拖拽对象,拖拽操作结束后,它们可以自动释放。他们对应于TDragObjectTDragControlObjectTDragDockObject,区别在于老的版本不能够在拖放操作完成时自动释放。

     

    TControl新增两个方法:ClientToParentParentToClient,用来在父亲与子女之间换算坐标。工作方式与ClientToScreenScreenToClient类似。

     

    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

    TDBLookupListBoxTDBLookupComboBox新增NullValueKey属性,允许用户使用空值(Null)赋值。

     

    TDBComboBox新增AutoComplete(自动完成)和AutoDropDown(自动下拉)属性。

     

    TDBListBox也新增AutoCompelete属性。

     

    TOpenDialog新增OptionsEx属性(译者注:该属性用来设置是否出现win2000特有的位置工具条),同样,保存对话框也新增此属性。

    ExtCtrls.pas

    TImage-Proportional(比例)属性被增加,用于控制图像的高宽比而不论图像控件的尺寸如何。

    Forms.pas

    TApplication(以及TApplicationEvents)新增OnSettingChange事件,用来通知系统设置的改变。

     

    TForm新增AlphaBlendAlphaBlendValueTransparentColor以及TransparentColorValue等属性以支持分层的Form

     

    TScreen提供了获取桌面工作区大小的一系列属性(WorkAreaRectWorkAreaTopWorkAreaLeftWorkAreaHeightWorkAreaWidth)。另外,还有一系列的新方法允许你定位哪个监视器更加与点,矩形,或者窗口相匹配。

     

    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

    DrawDrawOverlayGetIcon方法均被加上Overload(重载)标记,便于你覆盖图像列表的属性设置。

     

    IniFiles.pas

    Ini文件开始支持使用流读写二进制数据。

     

    TMemIniFile支持控制子串是否大小写敏感。

     

    THashedStringList是一个新的TStrings的派生类,使用内部的哈希(杂凑)表提高访问速度。

    Masks.pas

    EditMask(掩码编辑框)和文本使用自定义类型因此他们的属性编辑器更加有用。

    Menus.pas

    TMenuItem增加一个AutoCheck(自动标记)属性,用来标记当用户点及菜单条目时,是否自动在已经标记和未标记之间切换。

    Registry.pas

    TRegistry开始支持使用流读写二进制数据。

    StdCtrls.pas

    OnCloseUpOnSelect事件被增加到TCustomComboBox中(TComboBox也一样)。OnCloseUp事件在组何况的下拉列表关闭时触发(与OnDropDown触发的时机相反)。OnSelect在列表的东西被选中时触发(或者当上下滚动可选值时使得组合框的内容被改变时)。组合框新增AutoCompelete属性,缺省为True

     

    TListBox新增对两个风格的属性:lbVirtuallbVirtualOwnerDraw。两个风格用于支持虚的列表框,即不保存任何条目。通过设置Count属性可以指定条目的个数,然后在OnDataOnDataFind,和OnDataObject事件中提供条目(以及相关的对象)。

     

    TypInfo.pas

    现在调用对象的GetPropInfo方法是安全的了。假如对象没有任何RTTI信息,则简单的返回nil

     

    增加FreeAndNilProperties。它将释放(free)并且置空(nil)支持RTTI的对象的所有对象属性。注意它将对所有的对象,包括引用的对象进行此项操作,所以最好先将被引用的对象释放,置空。

     


    最新回复(0)