Free Tools CodeS-SourceS.com
Programmez!
PCInfo Web


Sélection logiciels

Google Earth v5.0

VLC MediaPlayer v1.1.1

Simple v0.1.1

HxD Hex Editor v1.7.7.0

Flash Decompiler v4.1


En bref

01 Juil 2010 Google Me : le nouveau concurrent de Facebook ?

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


Les derniers dossiers


Les ressources Delphi et C/C++

Music Pro

Dessin de texte sur un canvas

Comparer strings sans tenir compte des accents

Drag & Drop à partir d'une fenêtre Windows

SMTPCLIENT et SMTPMESS : Envoyer des mails


Membres en ligne

+13 visiteurs en ligne


Nos partenaires

Espacerezo

KilaSoft



Vous êtes ici : AccueilDelphiSnippets › TRichEdit : scroll par la molette de la souris

TRichEdit : scroll par la molette de la souris

Informations sur la source :

Auteur : Thwilliam

Catégorie : Composants

Niveau : Débutant

Déposé le : 09 Novembre 2009 à 12h54

2 commentaires sur ce snippet


Description

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.

 


Code Source

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;


Autres contributions de Thwilliam


Commentaires sur le snippet

francky23012301
Administrateur

Avatar de francky23012301

Inscrit le 22 Août 2007

103 points

Profil

Posté le Vendredi 27 Novembre 2009 à 20:40

Merci Thierry pour ce code bien utile



Thwilliam
Membre

Ce membre n'a pas d'avatar

Inscrit le 14 Oct 2007

44 points

Profil

Posté le Samedi 28 Novembre 2009 à 09:11

Merci à toi Francky




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