Delphi - 我如何找到一个组件正在做什么'幕后'

时间:2011-03-10 09:05:14

标签: delphi custom-component

我试图从公共组件(TDateTimePicker)编写一个新的组件后代。我的最终目标是对TDateTimePicker进行子类化,以便当用户输入组件时,'SelText'被设置为DateTime的特定部分。

目前,TDateTimePicker的行为是在它再次获得焦点时聚焦最后选择的文本。我想首先实现的是找出(查看)用户关注TDateTimePicker时实际执行的代码。

我可以看到TDateTimePicker是TCommonCalender的后代,后者又是TWinControl的后代。但香港专业教育学院尝试在TWinControl中的程序上放置一个断点,他们无法达到(我猜这是正确的行为,因为许多组件继承自TWinControl)。

那么当用户输入TDateTimePicker时,我如何知道发生了什么?运行什么代码?这一切都隐藏了吗?我希望这可以说明我需要做些什么来覆盖默认的行为以实现我的目标。

2 个答案:

答案 0 :(得分:4)

TDateTimePicker是Windows标准控件的包装器。 Delphi包装器只是将消息发送到Windows控件,因此没有太多的Delphi代码可供阅读。

您必须将TDateTimePicker视为“黑匣子”。无论发生什么,它都是你不应该关心的实现细节。事实上,日期时间选择器的实现细节已经改变,例如,使用Windows 7!

答案 1 :(得分:3)

在Project | Options | Compiler中,选中'Use debug DCUs'并重建应用程序。根据Delphi版本,此复选框可以在不同的位置找到,这适用于Delphi 2007。