Я сделал MyButton
компонент, наследуемый от Class(TPanel)
. Компонент меняет внешний вид в связи с OnMouseEnter
, OnMouseLeave
, OnMouseDown
, OnMouseUp
и ENABLED
.
Это некоторый код для ENABLED
:
Я использую стандартные CMMouseEnter(var msg: TMessage)
и CMMouseLeave(var msg: TMessage)
:
Сразу все кажется в порядке. Все события запускаются так, как должны. За исключением одной ситуации:
Когда я помещаю 2 кнопки MyButton в форму (MyBut1
и MyBut2
) и записываю этот код в событиях клика:
MyBut1.Click(Sender): MyBut1.Enabled:=False //!!!
Все в порядке. (Отключает собственный компонент)
MyBut2.Click(Sender): MyBut1.Enabled:=True //!!!
Работает нормально, но CMMouseEnter и CMMouseLeave не запускаются впоследствии. Все остальные события работают нормально.
Я надеюсь, что это описание достаточно информации, и я надеюсь, что кто-то может мне помочь.
Private
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
procedure CMMouseEnter(var msg: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE;
Protected
procedure SetEnabled(aEnab: Boolean); override;
published
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
Procedure TMyButton.SetEnabled(aEnab: Boolean);
Begin
Inherited;
If aEnab=False Then Begin
//Do Somtiing
End
Else Begin
//Do Somthing else
End;
If Not Locked Then Invalidate;
End;
procedure TMyButton.CMMouseEnter(var msg: TMessage);
begin
//Call to DoMouseEnter;
end;
procedure TMyButton.CMMouseLeave(var msg: TMessage);
begin
//Call to DoMouseLeave;
end;