在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Delphi XE6新增了一些特性并增强了原有的功能,主要有以下几个方面:
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的对象的所有对象属性。注意它将对所有的对象,包括引用的对象进行此项操作,所以最好先将被引用的对象释放,置空。
Delphi XE5是所有Delphi开发人员的必须备升级,并且是来自Embarcadero的获奖的、多设备应用开发解决方案的最新版本。使用Delphi XE5的新特性,以交付应用Android、 iOS、Windows 和OS X。以PC机、平板电脑和智能手机为目标,更轻松地与更多数据连接 - 等等! Delphi XE5中的新特性
… 等等!
【CSDN8月20日消息】根据国外媒体报道,Embarcadero Technologies公司宣布推出RAD Studio 2010。开发者可以利用它提供的便捷的触摸屏开发框架来创建基于触摸GUI界面的程序,包括平板电脑、触摸板和kiosk程序。 该版本提供了如下的新特性和功能: 创建手势识别和触摸控制的程序。 内置了超过30种的手势设定,包括上、下、左、右以及像平移、缩放和旋转。 可以通过VCL Gesture Designer在组件级对手势进行可视化设定和添加。 可以在输入屏幕上建立虚拟触摸板和多语言键盘。 可以在只对代码进行很小的情况下就能将Delphi和C++ Builder程序升级为支持触摸和手势识别功能。 RAD Studio 2010对于触摸程序开发的支持独具特色,因为它可以和多种版本的Windows无缝接合,包括Windows 2000、XP、Vista和Windows 7,而且支持多种输入设备,包括单点和多点触屏幕、触摸笔和鼠标。 触摸操作现在已经变成了现实,而且可以向用户提供更丰富的交互体验。从kiosks和POS机到iPhone和 Windows 7,手势识别功能已经成为使程序更具竞争力的关键特性,因为消费者和商家都认识到了自然输入的便利性。,Embarcadaro公司的Michael Swindell说,随着Delphi和C++ Builder 2010的发布,Embarcadero也将提供一套简单的解决方案,可以向多种Windows平台的程序中加入触摸和手势识别功能。 RAD Studio 2010的其他特性还包括: 支持Firebird。Delphi对其提供了本地支持。Embaracaro声称Firebird是全球应用最广的开源数据库。 新的DataSnap。DataSnap服务器已经扩展到了几乎所有的架构RIA、JEE、RESTful、AIR等等。 支持Windows 7。RAD Studio预计对Windows 7的API提供支持,开发者可以利用其Natural Input库Direct2D图形库。 对IDE环境进行了超过120项改进,提升了开发者的使用体验,提高了工作效率。 小资料:Kiosks,Kiosk ModeKiosk Software广泛用于公共电脑或者嵌入系统(如可以上网的公共电话、ATM、机场自助服务系统、网吧管理软件等),这些程序一般都运行于普通的操作系 统,但为了安全以及防止使用者使用其他的程序,Kiosk一般都会全屏运行并锁住系统的其他程序。虽然IE的Kiosk模式没有锁住其他程序,你仍可以用 Alt+Tab来切换,但通常运行Kiosk程序的地方都不会提供键盘给你,最多只是一个仅供最低需求的虚拟键盘而已。(译/曹巳甲) Delphi2010新发现-类的构造和析构函数功能 Delphi2010发布了. 虽然凭着对Delphi的热爱第一时间就安装了,但是现在可能是年纪大了,对新事物缺乏兴趣了.一直都没有仔细研究. 今天有点时间试了一下新功能. 本来C#和Delphi.NET是支持类的构造函数/析构函数的(注意不是实例的构造和析构).也就是在模块初始化/卸载的时候会调用. 这样有很多好处,比如说类的静态变量的初始化什么的都可以在这里做. Delphi For Win32对这方面的需求还不是很大. 第一个原因.历史上旧版Delphi不支持静态变量.只能用Unit的全局变量+类函数来模拟.所以类的构造析构基本没需求.从Delphhi2005还是2006开始才支持Class var的.记得不太清楚了 第二个原因.Delphi的Unit有初始化节和反初始化节(initialization/finalization).很多初始化工作都可以在这里面做.比如说类的静态变量.所以对类的构造函数需求不是很大. 随手试了一下Delphi2010.惊喜的发现不知道什么时候Delphi2010已经开始支持类的构造和析构函数了.易博龙和CodeGear居然在介绍Delphi2010的新变化的同时都没有介绍这个特征. 贴一段代码: type
TTest = class
private
class var StaticABC : Integer; //类变量(类似C++的静态变量.但不完全等同)
var
FABC : Integer; //普通成员变量
public
class constructor Create();//类的构造函数
class destructor Destroy; //类的析构函数
constructor Create(); //实例的构造函数
destructor Destroy; override; //实例的析构函数
end;
{ TTest }
class constructor TTest.Create;
begin
StaticABC := 1234;
end;
class destructor TTest.Destroy;
begin
end;
constructor TTest.Create;
begin
FABC := StaticABC;
end;
destructor TTest.Destroy;
begin
inherited Destroy;
end;
呵呵.很有意思.虽然以前用Unit的initialization/finalization可以实现.但是如果有了类的构造和析构语法的话代码的可读性会更好. 同时还发现结构体(Record)也可以用一样的语法.可编译通过,但是实际上却没有效果.估计以后会加上这个功能吧
转载的delphi2010新功能 1、Object Inspector 中的 Boolean 属性显示了 Checkbox 这个改进比较明显,看下图就明白了,直接点击 Checkbox 即可改变 Boolean 的值; 2、可以用 Tab 键和 Shift+Tab 缩进代码了 这个没法用图来说明,只能自己体会了,个人觉得,Delphi 1.0 就应该这么做 3、可维护最近打开的 Projects 和 Files 列表 在菜单 File-Reopen-Propeties 中,可设置最近打开 Projects 和 Files 的显示数量,并可删除、清空,如下图: 4、代码编辑器的搜索功能增强 看下图,效果和 Firefox 的搜索功能几乎一致,搜索框移到了下方,同时高亮搜索词: 5、代码自动完成增强:Auto Invoke 刚才说“里程碑”,主要是指这个功能。 当前的 Delphi 编辑器只有在输入“.”的时候,才会出现自动完成列表。在 Delphi 2010 中启用 Auto Invoke 功能后,当你输入任意一个字符的时候,都会出现匹配的自动完成列表,和 Visual Studio 差不多。 Auto Invoke 默认是禁用的,在 Tools - Options 中启用: 下图是输入 Show 后出现的自动完成列表,当然,当你输入第一个字母 S 的时候,自动完成列表已经开始匹配显示了: 在 Visual Studio 中,当输入完赋值运算符后,可自动判断类型并显示枚举类型的值列表,当前的 Delphi 2010 还做不到这一点,不过当输入字符后,也是会按类型匹配的。看下图,会显示 Align 属性的可选值: 当前的 Auto Invoke 用的时候真的是很爽,不过有的时候还是有些问题,会不合时宜地出现,而且自动完成列表有时会匹配错误,编程时有被“干扰”的感觉,期望以后的版本能将其改进得更为“智能”。 6.格式化代码,Edit-source或ctrl+D,但格式效果不大好,可以设置一下
7.安装包标识 第一个图标表示已安装 第二个表示未安装 第三个表示非设计时包
8.拖动调试,这个比较有意思,断点还可以回退。看下面的效果 第一次运行的时候,x的值=150 按住33行的向右箭头不放,拖到32行放开,效果如下图 再F8走一步,x的值就变成200了
更多的Delphi2010新特性,可以参考Delphi 2010 Handbook,非常值得看看。 目前还只有英文版的。 http://m8spy.persiangig.com/.ZqB2Ja51KF/Ebooks/Delphi%202010%20Handbook.pdf 此书配套源码 http://cc.embarcadero.com/Download.aspx?id=27601
读帮助文档发现Delphi2009的新特性,象C语言一样用数组方式使用指针. 传统的Pascal指针和数组不是等价概念.不能像数组一样使用下标指针(编译器特殊处理的PChar类型除外). 而C语言中数组就是数组第一个元素的地址.和指针在一定程度上等价.指针所指向的内容也可以象数组一样用下标来访问. 虽然问题不大但是写起代码来就麻烦,而且不直观. 如下代码以往的Delphi只能这样写. const
rw = 10;
rh = 10;
procedure SetRects(lpRect: PRect; dwCount : Cardinal);
var
I : Integer;
begin
for I := 0 to dwCount - 1 do
begin
lpRect^ := Rect(I*rw, 0, I*rw+rw, rh);
Inc(lpRect);
end;
end;
或者非要用下标访问的话就要变通一下. const
rw = 10;
rh = 10;
procedure SetRects(lpRect: PRect; dwCount : Cardinal);
type
TRects = array[0..0]of TRect;
pRects = ^TRects;
var
I : Integer;
lpRects : pRects;
begin
lpRects := pRects(lpRect);
for I := 0 to dwCount - 1 do
begin
lpRects[I] := Rect(I*rw, 0, I*rw+rw, rh);
end;
end;
但是Delphi2009新增了编译开关,允许象C语言一样用下标直接访问数组所指向的元素. {$POINTERMATH ON}
const
rw = 10;
rh = 10;
procedure SetRects(lpRect: PRect; dwCount : Cardinal);
var
I : Integer;
begin
for I := 0 to dwCount - 1 do
begin
lpRect[I] := Rect(I*rw, 0, I*rw+rw, rh);
end;
end;
呵呵方便多了. 不过要注意默认是{$POINTERMATH OFF}的. 目前多数Delphi2009新特性的介绍 2008年09月16日 星期二 10:43
内嵌类 内嵌类在类的内部声明,它被大量的应用在.net framework以及面向对象的编程中,它表明一种概念性关联关系,并且避免了命名冲突,它同样支持delphi win32编译。 type
className = class [abstract | sealed] (ancestorType)
memberList
type
nestedTypeDeclaration
memberList
end;
当内嵌类定义遇到第一个非标识符时终止,例如:procedure, class, type和所有可见性范围修饰符。内嵌类与容器类同样适用正常的访问、可见性规则。一个内嵌类能存取它的容器类实例的变量(如字段,属性或者方法),但是 它必须要有一个参考对象。一个内嵌类能存取类静态字段(class fields)类属性(class properties)和类静态方法(class static methods)且不用参考对象,但必须遵守delphi可见性规则。 type
TOuterClass = class
strict private
myField: Integer;
public
type
TInnerClass = class
public
myInnerField: Integer;
procedure innerProc;
end;
procedure outerProc;
end;
在实现内嵌类的innerProc方法时,你必须指定它的容器类的名字,例如: procedure TOuterClass.TInnerClass.innerProc;
begin
...
end;
可以用 . 标志像存取一般的类成员一样去存取嵌套类的成员。例如: var
x: TOuterClass;
y: TOuterClass.TInnerClass;
begin
x := TOuterClass.Create;
x.outerProc;
...
y := TOuterClass.TInnerClass.Create;
y.innerProc;
end;
内嵌常数 type
TMyClass = class
const
x = 12;
y = TMyClass.x + 23;
procedure Hello;
private
const
s = 'A string constant';
end;
begin
writeln(TMyClass.y); // 输出y的值 35.
end.
delphi2006语言新特性-帮助类 帮助类(Class Helpers) type
identifierName = class helper [(ancestor list)] for classTypeIdentifierName
memberList
end;
ancestor list是可选的 type
TMyClass = class
procedure MyProc;
function MyFunc: Integer;
end;
...
procedure TMyClass.MyProc;
var X: Integer;
begin
X := MyFunc;
end;
function TMyClass.MyFunc: Integer;
begin
...
end;
...
type
TMyClassHelper = class helper for TMyClass
procedure HelloWorld;
function MyFunc: Integer;
end;
...
procedure TMyClassHelper.HelloWorld;
begin
writeln(Self.ClassName); // Self是TMyClass 类, 不是TMyClassHelper
end;
function TMyClassHelper.MyFunc: Integer;
begin
...
end;
...
var
X: TMyClass;
begin
X := TMyClass.Create;
X.MyProc; // 调用TMyClass.MyProc
X.HelloWorld; // 调用TMyClassHelper.HelloWorld
X.MyFunc; //调用TMyClassHelper.MyFunc
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论