use*_*105 4 delphi events custom-component
我正在制作一个派生TPanel的自定义Panel组件.
我希望我的新组件在OnMouseEnter和OnMouseLeave事件上执行一些代码,但是,我不知道如何实现它.
我看到TPanel发布了OnMouseEnter,OnMouseLeave属性.
我如何覆盖这些并添加一些我自己的代码?
我的想法的例子:TMyPanel的
默认行为应该在组件本身.
on event OnMouseEnter do: Color := NewColor;
on event OnMouseLeave do: Color := OldColor;
Run Code Online (Sandbox Code Playgroud)
然后,我希望能够在运行时为这些事件分配一些功能.此分配在应用程序中完成.
.. TButton1.Click ..
begin
MyPanel1.OnMouseEnter := DoSomethingMore;
MyPanel1.OnMouseLeave := DoSomethingElse;
end;
Run Code Online (Sandbox Code Playgroud)
所以最后,当鼠标在新面板上时,它应该改变颜色并执行在DoSomethingMore过程中编写的其他一些操作.
谢谢
Anoher方法是自己处理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;
Run Code Online (Sandbox Code Playgroud)
编辑:请参阅下面的更好的VCL兼容版本.
| 归档时间: |
|
| 查看次数: |
2796 次 |
| 最近记录: |