Bonjour à tous,
Je développe une application et j’ai besoin de savoir à un moment donné si le curseur de la souris survole la Form ou si au contraire il est en dehors de la fiche J’ai bien sûr rechercheé des infos à ce sujet sur les forums et j’en un trouvé quelques uns qui aborde ce sujet. Voilà le code que j’ai modifié et mis dans mon application :
Pour l’évènement OnMouseMove de la Form :
[CODE]
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
Tag : TagTrackMouseEvent;
b : Boolean;
begin
Tag.cbSize := sizeof(Tag);
Tag.dwFlags := TME_LEAVE;
Tag.hwndTrack := Self.Handle;
Tag.dwHoverTime := 10;
b := TrackMouseEvent(Tag);
// Vérifier que B est True si nécessaire. Indique que TrackMouseEvent à fonctionné.
end;
J’ai placé ce code dans Private…
...et j’ai un Timer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure TForm1.WMMOUSELEAVE(var Message: TMessage); begin Label1.Caption := 'la souris a quitté la fiche'; end;
Effectivement, cela fonctionne bien…sauf que sur ma forme j’ai un TEdit, plusieurs TCheckBox, etc. Quand la souris passe sur la form, cela m’indique bien « la souris est dans la fiche » mais le survole d’un des composants affiche le message «'la souris a quitté la fiche' » alors que le curseur est bien positionné sur la fiche. J’i essayé tout de sorte de manip mais je n’arrive à comprendre pourquoi ? Merci pour votrer aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 procedure TForm1.Timer1Timer(Sender: TObject); begin Label1.Caption := 'la souris est dans la fiche'; FormMouseMove(Self, [SSShift], 0, 0); //Pour rafraîchir la position de la souris end;
Cordialement
Partager