![]() |
![]() |
![]() |
|
![]() |
|
Patch Français pour MediaMonkey 3.0.1 v3.0.1
15 Fév 2010
Windows Seven : Les premières conclusions
06 Fév 2010
Une semaine d'actu : retour sur l'actualité de la semaine
28 Déc 2009
2000-2010 : Les révolutions qui ont changé le monde
31 Oct 2009
Google Maps Navigation : nouvelle bombe atomique parmi les GPS
24 Juil 2009
HADOPI 2 : Ce qu'on en pense à l'étranger
Google : le maître des noms de domaines
La nouvelle version de GMail en images !
Barème de rémunération pour les disques durs multimédias
TRichEdit : scroll par la molette de la souris
Récupérateur de mots de passe WLM
+5 visiteurs en ligne
Auteur : Thwilliam
Catégorie : Composants
Niveau : Débutant
Déposé le : 09 Novembre 2009 à 12h54
Si, dans votre version Delphi, le composant TRichEdit ne fait pas de scrolling automatique (je programme en Delphi7 perso, c'est le cas), voici une solution très simple qui permet un scroll du nombre souhaité de lignes.
Il suffit d'assigner au RichEdit l'événement OnMouseWheel et de lui transmettre le message EM_LINESCROLL.
Ceci ne marchera, cependant, que si le RichEdit a le focus.
Sinon, deuxième solution : intercepter dans l'application le message WM_MOUSEWHEEL.
Â
1 23 45 67 89 1011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 3233 3435 3637 3839 | // Première solution : scroll de 3 lignes (valeur de L) procedure TForm1.RichEdit1MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);var L: integer;begin if WheelDelta > 0 then L:= -3 else L:= 3; RichEdit1.Perform(EM_LINESCROLL, 0, L); end; // Deuxième solution : //Placez dans la section private de votre Form principale : procedure AppMessage(var Msg: TMsg; var Handled: boolean); // Dans l'événement OnCreate de votre Form principale : Application.OnMessage:= AppMessage; // Implémentez la procedure AppMessage comme ceci :procedure TForm1.AppMessage(var Msg: TMsg; var Handled: boolean); var P: TPoint; R: TRect; L: integer; begin if (Msg.Message = WM_MOUSEWHEEL) and (Screen.ActiveForm = Form1) then begin // on regarde si la souris est au-dessus du RichEdit... P:= ScreenToClient(Mouse.CursorPos); with RichEdit1 do R:= Rect(Left, Top, Left + Width, Top + Height); if PtInRect(R, P) then // ...c'est le cas, on envoie le message begin if Msg.wParam > 0 then L:= -3 else L:= 3; RichEdit1.Perform(EM_LINESCROLL, 0, L); end; end;end; |
|
francky23012301
Administrateur
|
|
|
|
Thwilliam
Membre
|
|
|
Ajoutez votre commentaire & avis sur la ressource :
Vous n'êtes pas connecté !
Rejoignez dès maintenant la communauté en 3 clics et exprimez votre avis !
J'ai déjà un compte