évenement mouseEnter et mouseExit

cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 - 23 août 2007 à 12:49
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 - 25 août 2007 à 20:16
bonjour tlm;

je travail avec des speedButtons, et je veux changer leurs Glyph quand le curseur rentre dans la zone du bouton et le changer une autre fois quand le curseur sort, j'utilise la méthode suivante :
////////////
procedure TForm1.SpeedButton4MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
xx : TBitmap;


begin
xx := TBitmap.Create;//showmessage ('x '+inttostr(x)+' et y '+inttostr(y));
if ((x>0) and (x<79) and (y>0) and (y<62)) then
begin
   xx.LoadFromFile('C:\\Log_Off12.bmp');
   SpeedButton4.Glyph := xx;
end
else
begin
   xx.LoadFromFile('C:\\Log_Off12_f.bmp');
   SpeedButton4.Glyph := xx;
end;
//////////////

mais le problème c'est qu'avec les mouvements du curseur, on voit le rafraichissment de l'image, ce qui n'est pas trop agréable. et lors de sa sortie de la zone du bouton, c'est pas toujours que ça marche,

y a t il pas une méthode (comme en java) MouseEnter et MouseExit???

Merci pour votre aide!!

3 réponses

Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
23 août 2007 à 13:53
moi je te conseille plutot d'implementer un classe heritant de TSpeedButton implementant les message MouseEnter et MouseLeave :

type
    TMonSpeedButton = class(TSpeedButton)
    private
        procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
        procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
    ...
    end;

...

TMonSpeedButton.CMMouseEnter(var Message: TMessage);
begin
//    AfficherImageInterieur;
end;

TMonSpeedButton.CMMouseLeave(var Message: TMessage);

begin
//    AfficherImageExterieur;

end;
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
24 août 2007 à 22:10
@julio : j'ai regarde ton composant, il a l'air sympa mais je trouve ta technique un peu 'limite'. mettre un timer avec interval de 1, ca rique de bouffer un peu de ressources, alors que l'api windows le fait deja !!!
0
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
25 août 2007 à 20:16
bonjour,

justement je cherche un composant qui exploite les événements de l'api windows!!
0
Rejoignez-nous