我需要检测TDateTimePicker组件的OnMouseLeave事件,但它在事件列表中不包含这样的事件。有没有办法手动检测?
发布于 2009-11-20 20:55:04
您可以取消对CMMouseLeave过程的保护。
TDateTimePicker = class(ComCtrls.TDateTimePicker)
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
end;
{ TDateTimePicker }
procedure TDateTimePicker.CMMouseLeave(var Message: TMessage);
begin
{do something};
end;发布于 2009-11-20 19:27:10
JVCL有一个datetimepicker控件,它应该有OnMouseEnter/OnMouseLeave事件,与Delphi版本无关(所有JVCL控件都有这些事件)。
发布于 2009-11-20 19:16:57
TDateTime不是一个可视化组件,因此它不会有鼠标离开事件。您能检查实际的组件(它是日期时间选择器吗?)onExit事件应处理离开可视控件的鼠标。
知道您使用的是哪个版本的Delphi也会很有帮助
谢谢..。
对不起,我昨天可以提供更多的帮助,我使用的计算机没有安装Delphi。要获取不导出特定控件的Mouse Leave事件,请尝试执行以下操作。(此代码位于包含日期时间选择器控件的窗体上)
procedure TForm1.FormCreate(Sender: TObject);
begin
application.OnMessage := AppMsg;
// Save the windows hande of the date time picker...
DTWind := DateTimePicker1.handle;
end;
procedure TForm1.AppMsg(var Msg: TMsg; var Handled: Boolean);
begin
// If we find a mouse leave event, for the date/time picker,
// then do something
if (msg.message = 160) and
(msg.hwnd = DTWind)
then
begin
if dateTimePicker1.color = clBlue
then dateTimePicker1.Color := clRed
else dateTimePicker1.Color := clBlue;
end;
end;创建一个过程来获取应用程序消息(AppMsg),并将其分配给应用程序对象的OnMessage事件。保存dateTimePicker控件的窗口句柄。
在该过程中,查找来自DateTimePicker控件的鼠标留言消息,然后执行所需的任何处理(如果是我的示例,我只是处理颜色)
希望这能给你一个变通的方法。
https://stackoverflow.com/questions/1769719
复制相似问题