Comment détecter que la souris quitte un TListBox
J'ai un formulaire qui contient entre autres, trois TListBox.
J'effectue actuellement un traitement spécifique selon la position de la souris dans ces TListbox.
Je souhaite effectuer un autre traitement lorsque la souris quitte un TListBox au moment où la souris sort du TListBox.
Si la souris revient sur ce TListBox, je veux refaire le même traitement lorsqu'elle en sortira à nouveau.
Quelle est la meilleure façon de s'y prendre?
... exception ... 'Class TListBox not found'
En compilant, dès le début de l'exécution, je reçois l'erreur:
Project ScrabbleCool.exe raised exception class EClassNotFound with message 'Class TListBox not found'. Process stopped. Use Step or Run to continue.
Mais j'ai probablement mal implanté ta suggestion.:oops:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
TMyTListBox_OnMouseLeave = class(TListBox)
private
FMouseEnter : TNotifyEvent;
FMouseLeave : TNotifyEvent;
procedure doMouseEnter(var Msg : TMessage); message CM_MOUSEENTER;
procedure doMouseLeave(var Msg : TMessage); message CM_MOUSELEAVE;
published
property OnMouseEnter : TNotifyEvent read FMouseEnter write FMouseEnter;
property OnMouseLeave : TNotifyEvent read FMouseLeave write FMouseLeave;
end;
TExistence = class(TForm)
ListBox7plus1: TMyTListBox_OnMouseLeave;
ListBoxCousins: TMyTListBox_OnMouseLeave;
ListBoxSousMots: TMyTListBox_OnMouseLeave;
...
end;
implementation
procedure TMyTListBox_OnMouseLeave.doMouseEnter(var Msg : TMessage);
begin
if Assigned(FMouseEnter) then
FMouseEnter(Self);
end;
procedure TMyTListBox_OnMouseLeave.doMouseLeave(var Msg : TMessage);
begin
if Assigned(FMouseLeave) then
FMouseLeave(Self);
end; |
Qu'est-ce que je n'ai pas compris?
Erreur même en réduisant le code au minimum
Indice supplémentaire:
Si je réduis le code de façon qu'à ne redéfinir TListBox pour "un autre nom", la même erreur se produit.
Code:
1 2 3 4 5 6 7 8 9 10
|
TMyTListBox_OnMouseLeave = class(TListBox)
end;
TExistence = class(TForm)
ListBox7plus1: TMyTListBox_OnMouseLeave;
ListBoxCousins: TMyTListBox_OnMouseLeave;
ListBoxSousMots: TMyTListBox_OnMouseLeave;
...
end; |
et j'ai mis en commentaire tout ce qui est relatif aux procédures
'doMouseEnter' et 'doMouseLeave'.
NOTE: info supplémentaire qui m'apparaît superflue mais sait-on jamais.
Lorsque je lance la compilation, je reçois trois messages, un pour chacune des déclarations ci-dessus dans 'TExistence' qui dit ceci:
Field Existence.ListBox7plus1 should be of type TListBox but is declared 'TMyTListBox_OnMouseLeave'. Correct the declaration?
et je réponds "NON".