IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Delphi Discussion :

ScrollBox et mousewheel


Sujet :

Contribuez Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 2
    Points : 5
    Points
    5
    Par défaut ScrollBox et mousewheel
    Bonjour,
    suite à quelques recherche voici la solution que j'ai trouvé pour pouvoir utiliser la roulette de la sourie avec un scrollBox. je ne suis pas très bien l'évolution des objet delphi et donc il existe peut-être un scrollBox qui inclut cette fonction. Mais pour contribuer, voici ce que j'ai fait :

    Tout dabord il faut que le scrollbox soit en Align : alclient. Si ce n'est pas le cas et pour ne pas tout changer dans la form il suffit de le mettre dans un panel par exemple et de donner la propriété alClient au scrollbox.

    Ensuite, l'evennement qui "capte" bien la roulette est le FormMouseWheel de la form qui contient le scrollbox.

    Enfin, le code à inserrer dans cet évennement est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    procedure TNomDeLaForm_e.FormMouseWheel(Sender: TObject; Shift: TShiftState;
        WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
    var
      i: integer;
      PosHautGauche: TPoint;
      PosBasDroite: TPoint;
     
    begin
     
      for i := 0 to TForm(Sender).ComponentCount - 1 do
        begin
          try
            if TForm(Sender).Components[i] is TScrollBox then
              begin
                if (TForm(Sender).Components[i] as Tscrollbox).CanFocus then
                  begin
                    PosHautGauche.X := (TForm(Sender).Components[i] as TScrollBox).Left;
                    PosHautGauche.Y := (TForm(Sender).Components[i] as TScrollBox).Top;
                    PosBasDroite.X := (TForm(Sender).Components[i] as TScrollBox).Left
                      + (TForm(Sender).Components[i] as TScrollBox).Width;
                    PosBasDroite.Y := (TForm(Sender).Components[i] as TScrollBox).Top
                      + (TForm(Sender).Components[i] as TScrollBox).Height;
     
                    PosHautGauche := TForm(Sender).ScreenToClient((TForm(Sender).Components[i] as TScrollBox).ClientToScreen(PosHautGauche));
                    PosHautGauche.X := PosHautGauche.X + TForm(Sender).Left;
                    PosHautGauche.Y := PosHautGauche.Y + TForm(Sender).Top + TForm(Sender).Height - TForm(Sender).ClientHeight;
     
                    PosBasDroite := TForm(Sender).ScreenToClient((TForm(Sender).Components[i] as TScrollBox).ClientToScreen(PosBasDroite));
                    PosBasDroite.X := PosBasDroite.X + TForm(Sender).Left;
                    PosBasDroite.Y := PosBasDroite.Y + TForm(Sender).Top + TForm(Sender).Height - TForm(Sender).ClientHeight;
     
                    if (MousePos.X > PosHautGauche.X) and (MousePos.Y > PosHautGauche.Y)
                      and (MousePos.X < PosBasDroite.X) and (MousePos.Y < PosBasDroite.Y)
                      then
                      (TForm(Sender).Components[i] as TScrollBox).VertScrollBar.Position := (TForm(Sender).Components[i] as TScrollBox).VertScrollBar.Position - WheelDelta;
                  end;
              end;
          except
          end;
        end;
    end;

    voilà.

    à plus
    Laurent

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Merci pour ta participation
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup, ça marche nickel.

Discussions similaires

  1. Mousewheel sur Scrollbox
    Par jeanmichmuch66 dans le forum C++Builder
    Réponses: 28
    Dernier message: 14/09/2011, 22h23
  2. ScrollBox et mousewheel
    Par scorplex dans le forum Delphi
    Réponses: 4
    Dernier message: 15/09/2006, 17h47
  3. ScrollBox
    Par Anonymous dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/12/2005, 09h17
  4. Comment effacer le contenu d'une scrollbox???
    Par Leclair2000 dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/07/2004, 16h34
  5. Evenement sur les barres de défilement d'une ScrollBox
    Par Nico118 dans le forum C++Builder
    Réponses: 2
    Dernier message: 06/05/2004, 14h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo