Free Tools CodeS-SourceS.com
Programmez!
PCInfo Web


Sélection logiciels

LogProtect v1.4.1

Easy Translator v3.4

NetScape 7.1 v7.1

Patch Français pour MediaMonkey 3.0.1 v3.0.1

Dungeon Party v1.0


En bref

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


Les derniers dossiers


Les ressources Delphi et C/C++

ZSImage

TRichEdit : scroll par la molette de la souris

TThResCollection

Récupérateur de mots de passe WLM

Music Pro Package Version 2


Membres en ligne

+5 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

82 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

29 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