gpt4 book ai didi

delphi - 在我的自定义组件中,如何增强鼠标输入和离开事件?

转载 作者:行者123 更新时间:2023-12-03 15:18:08 25 4
gpt4 key购买 nike

我正在制作一个派生TPanel的自定义面板组件。

我希望我的新组件在 OnMouseEnterOnMouseLeave 事件上执行一些代码,但是,我不知道如何实现它。

我看到TPanel已发布属性OnMouseEnterOnMouseLeave

我如何覆盖这些并添加一些我自己的代码?

我的想法的例子:
TMyPanel 的默认行为应该在组件本身中。

on event OnMouseEnter do: Color := NewColor;
on event OnMouseLeave do: Color := OldColor;

然后,我希望能够在运行时为这些事件分配一些功能。此分配是在应用程序中完成的。

.. TButton1.Click ..
begin
MyPanel1.OnMouseEnter := DoSomethingMore;
MyPanel1.OnMouseLeave := DoSomethingElse;
end;

所以最后,当鼠标悬停在新面板上时,它应该改变颜色并执行 DoSomethingMore 过程中编写的一些其他操作。

谢谢

最佳答案

另一种方法是自己处理 Windows 消息:

type
TMyPanel = class(TPanel)
private
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
published
end;

implementation

{ TMyPanel }

procedure TMyPanel.CMMouseEnter(var Message: TMessage);
begin
// Do whatever your want before the event
if Assigned(OnMouseEnter) then OnMouseEnter(Self);
end;

procedure TMyPanel.CMMouseLeave(var Message: TMessage);
begin
// Do whatever your want before the event
if Assigned(OnMouseLeave) then OnMouseLeave(Self);
end;

编辑:请参阅下文以获得更好的 VCL 兼容版本。

关于delphi - 在我的自定义组件中,如何增强鼠标输入和离开事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2182657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com