发信人: lofe ()感激生活(), 信区: BorlandDev
标 题: 斑竹贡献——Delphi 小技巧两则
发信站: 哈工大紫丁香 (Mon Sep 4 16:16:14 2000), 转信
Delphi 小技巧两则
Flier
最近在研究类及类方法时发现一些很有趣的用法,
这里挑出两则最有用的与大家分享。
一、访问保护属性
众所周知,delphi的对象有private、protected和public
三个级别的访问控制。而delphi有一个奇怪的规则,就是在同
一个unit里的对象可以互相访问对方的 protected 级别属性!
利用这个特性,我们可以轻松访问任意对象的 protected 级别
属性。虽然这样不是很符合面向对象编程的封装的思想,但有时
的确是非常有用的。
比如在使用TDBGrid时,我们对如何获得其Row和Col非常头疼,
其实在TDBGrid中,Row和Col都是protected级别的属性,我们只要
在需要使用这两个属性的unit的interface里声明
TFakeGrid = class(TDBGrid);
然后就可以使用 TFakeGrid(ADBGrid).Row 和 TFakeGrid(ADBGrid).Col
轻松访问了,这个规则对protected里的方法同样适用。
二、类方法的使用
类方法(Class methods)是一类特殊的方法,它们在声明时要以class开头
type
TFigure = class
public
...
class procedure GetInfo(var Info: TFigureInfo); virtual;
...
end;
实现时也以class开头
class procedure TFigure.GetInfo(var Info: TFigureInfo);
begin
...
end;
(具体意义请自行查看帮助)
乍一看好象平时没有遇到过这个东东,也没有看到过谁用过这个东东,
好象这个东东也没有什么大作用,其实不然……
比如我们有时为输入密码或其他常用数据专门做一个form,但由于其代码
都在form定义的unit里面,所以在使用时仅仅需要几行代码,比如
with TfrmPassword.Create(nil) do
try
ShowModal;
finally
Free;
end;
虽然这样的代码已经很简洁,但如果写个十七八个还是很讨厌的。利用类方法
可以使其更简洁!一行足以……
TfrmPassword = class(TForm)
...
public
{ Public declarations }
class function Execute: TModalResult;
end;
...
class function TfrmPassword.Execute: TModalResult;
begin
with TfrmPassword.Create(nil) do
try
Result := ShowModal;
finally
Release; // 注意此处必须为release不能为free!
end;
end;
然后只用一行
TfrmPassword.Execute;
即可直接完成调用……是否很爽^_^
--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ 强烈抗议北约野蛮行径! .
. 希望、 \ \ \___/_\/\ \ \/_/__ __ _ _★ 保卫和平! .
. 工作、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ 打倒北约! .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ 振兴中华! .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ 还我同胞! .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .
※ 修改:.haojs 于 Sep 4 16:11:18 修改本文.[FROM: bbs.hit.edu.cn]
--
※ 转寄:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: bbs.hit.edu.cn]
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: haojs.bbs@bbs.whnet.]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.285毫秒