Delphi-如何找出组件正在做什么';幕后';

Delphi-如何找出组件正在做什么';幕后';,delphi,custom-component,Delphi,Custom Component,我正试图从一个公共组件(TDateTimePicker)编写一个新的组件子体。我的最终目标是对TDateTimePicker进行子类化,这样当用户输入组件时,“SelText”被设置为日期时间的特定部分 此时,TDateTimePicker的行为是在再次接收焦点时聚焦最后选定的文本。首先,我想了解的是,当用户关注TDateTimePicker时,实际执行的代码 我可以看出TDateTimePicker是普通日历的一个分散器,而普通日历又是TWinControl的分散器。但我尝试在TWinCont

我正试图从一个公共组件(TDateTimePicker)编写一个新的组件子体。我的最终目标是对TDateTimePicker进行子类化,这样当用户输入组件时,“SelText”被设置为日期时间的特定部分

此时,TDateTimePicker的行为是在再次接收焦点时聚焦最后选定的文本。首先,我想了解的是,当用户关注TDateTimePicker时,实际执行的代码

我可以看出TDateTimePicker是普通日历的一个分散器,而普通日历又是TWinControl的分散器。但我尝试在TWinControl中的过程上设置断点,但无法访问它们(我想这是正确的行为,因为许多组件都继承自TWinControl)


那么,当用户输入TDateTimePicker时,我如何找出发生了什么?运行什么代码?都藏起来了吗?我希望这可以帮助我了解需要做些什么来覆盖默认的bahaviour以实现我的目标。

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


您必须将TDateTimePicker视为“黑盒”。无论发生什么,这都是一个你不应该关心的实现细节。事实上,日期时间选择器的实现细节已经改变,例如,在Windows7中

在项目|选项|编译器中检查“使用调试DCU”并重建应用程序。根据Delphi版本的不同,此复选框可以在不同的位置找到,这是针对Delphi 2007的。

您所说的“无法访问”是什么意思?断点不会断开吗?您是否使用调试dcu构建了项目?您需要这样做,以便能够进入vcl代码和/或使vcl中的断点实际中断。所以您说这是不可能的?把它放在太难的篮子里?不是放在“太难的篮子里”,而是放在“你需要在微软”的篮子里。如果你在微软,这可能没那么难!谢谢你解决了我的第一个问题,虽然对我帮助不大。