Delphi 2009: OnMouseEnter, OnMouseLeave AND включен - PullRequest
0 голосов
/ 19 апреля 2020

Я сделал 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...