专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Delphi教程 » vcl组件:通过实例看VCL组件开发全过程(四) »正文

vcl组件:通过实例看VCL组件开发全过程(四)

来源: 发布时间:星期三, 2008年9月24日 浏览:77次 评论:0

参考:[http://www.CrazyCoder.cn/](接上文)
参考:[http://www.CrazyCoder.cn/]四、组件属性编辑器和组件编辑器:
参考:[http://www.CrazyCoder.cn/]通过上面的努力我们的组件似乎已经比较完美了,可我们也忽略了一些重要的细节和一些有趣的事情,这一篇我们将研究两个很有用的组件特性:
在之前开发组件核心功能时我们曾设置了两个属性BeginTime和WakeTime,他们都是字符串型的属性,然而他们所要表示的却是时间类型,这样就很有可能使组件使用者错误的编辑属性并导致转化字符串到时间时出错(当然这里只是为了文章的讲解,我们故意把它设置为了字符串类型),虽然通过浏览原代码你知道我们也做了一些代码级别的防出错处理,使当输入错误时属性自动变成‘00:00:00’,然而这对组件使用者来讲仍然显的很不友好,所以我们需要为这两个属性定制编辑器,我们的编辑器将弹出一个窗口里面有一个TdateTimePicker用来选择时间。在delphi中有许多这样的例子,例如大家都知道的lines属性,当你单击它右放的省略号时为自动弹出一个文本编辑器来编辑lines,这大大降低了组件使用者范错误的可能性。
在定制完属性编辑器以后,我们将为组件本身加入一写有趣的元素——组件编辑器,这也是在delphi中经常出现的,例如有些组件当你双击它时,它并不会进入代码编写状态,而是弹出它自己的编辑器。虽然我们的组件似乎并不需要这种特性,但为了演示它,我们也将它考虑近来,我们给我们的组件编写了一个版权信息和一个关于对话框,当组件使用者双击它时弹出关于信息(当然,这仅仅是种演示)。上面提到的两种特性由于它们只是会在设计时起作用,所以你完全可以在新的组件包中编写并注册它们,并将这个组件包设置为Designtime _disibledevent=class(TComponentEditor)
public
function GetVerbCount:integer;override;
function GetVerb(index:integer):string;override;
procedure ExecuteVerb(index:integer);override;
procedure Edit;override;
end;
实现部分:
procedure TClockEditor.Edit;

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: