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

C++Builder Discussion :

Mousewheel sur Scrollbox


Sujet :

C++Builder

  1. #21
    Membre confirm�

    Homme Profil pro
    En recherche d'emploi sur la r�gion de Toulouse
    Inscrit en
    Novembre 2007
    Messages
    62
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : En recherche d'emploi sur la r�gion de Toulouse
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Billets dans le blog
    1
    Par d�faut
    Me voila de retour apr�s tout ce temps.
    Mon programme est aujourd'hui quasi termin� a l�exception de se fichu scrollbox que je n'arrive toujours pas a g�rer.
    Je l'avait donc mis de c�t� mais maintenant que tout le reste est finit j'aimerais bien le faire fonctionner.
    Alors si quelqu'un sait le faire fonctionner serait il possible de me donner un exemple afin que je l'�tudie et l�adapte a mon prog. SVP
    Je rechercher juste un une form contenant un scrollbox avec une image ou autre qui soit plus grand verticalement afin d'utiliser la molette de la souris pour faire d�filer l'image( ou l'autre chose que l'on a mis dans le scrollbox).
    Si quelqu'un sait g�rer �a j�attends avec grande impatience se petit projet.
    Un grand MERCI d'avance a cette �me charitable.
    J-M.

  2. #22
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par d�faut
    Je ne suis pas s�r d'avoir compris, mais en utilisant les �v�nement OnMouseWheelDown et OnMouseWheelUp ca ne marche pas? Il faut que le composant ScrollBox ai le Focus (ScrollBox1->SetFocus() ; ):
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    void __fastcall TForm1::ScrollBox1MouseWheelDown(TObject *Sender,
          TShiftState Shift, TPoint &MousePos, bool &Handled)
    {
      ScrollBox1->VertScrollBar->Position += 25;
    }
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    void __fastcall TFRequest::ScrollBox1MouseWheelUp(TObject *Sender,
          TShiftState Shift, TPoint &MousePos, bool &Handled)
    {
       ScrollBox1->VertScrollBar->Position -= 25;        
    }

  3. #23
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 090
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 090
    Par d�faut
    Dans un ScrollBox, je g�n�rais une s�rie d'Edit g�n�r� � la vol�e, idem pas de molette, j'avais fini par utiliser un TDBCtrlGrid avec la gestion manuelle de la roulette

    Pour TScrollBox, on dirait que WM_MOUSEWHEEL n'ai jamais provoqu� par Windows pour ce control ! Etrange !

    En C++Builder 2007, j'ai aussi des ScrollBox contenant des Panels, il n'y a rien � faire, m�me en cliquant dans la zone client (hors d'un controle) ou sur la Barre, la molette ne fonctionne JAMAIS, aucun OnMouseWheel, OnMouseWheelDown ou OnMouseWheelUp ne se produit !

    D'ailleurs, cela ne fonctionne pas non plus pour une Form ayant des barres ou une Zone Client MDI !

    @sat83 !
    Il est dommage que le clic dans un ScrollBox n'affecte pas le Focus !
    Mais ta remarque est pertinente, enfin le WM_MOUSEWHEEL survient et donc OnMouseWheel !
    Par contre, le OnClick ou OnMouseEnter ne se produit pas si l'on survole la ScrollBar, on ne peut donc pas s'auto attribuer le Focus !

    C'est en tout cas, une solution simple, juste SetFocus dans le OnClick du TScrollBox qui s'attribue lui-m�me le Focus pour g�rer la souris !
    C'est tout de m�me un peu con !
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #24
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par d�faut
    Citation Envoy� par ShaiLeTroll Voir le message
    Il est dommage que le clic dans un ScrollBox n'affecte pas le Focus !
    Mais ta remarque est pertinente, enfin le WM_MOUSEWHEEL survient et donc OnMouseWheel !
    Par contre, le OnClick ou OnMouseEnter ne se produit pas si l'on survole la ScrollBar, on ne peut donc pas s'auto attribuer le Focus !
    Je n'ai jamais eu de soucis avec le molette souris sur un ScrollBox...
    Pour forcer le Focus lorsque l'on survole le ScrollBox, �ventuellement forcer le Focus dans le OnMouseMove:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    void __fastcall TForm1::ScrollBox1MouseMove(TObject *Sender,
          TShiftState Shift, int X, int Y)
    {
      ScrollBox1->SetFocus() ;
    }
    Je viens de tester chez moi (BCB5) �a fonctionne.

  5. #25
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 090
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 090
    Par d�faut
    Oui, c'est ce que j'ai fait OnMouseMove par contre ne se d�clenche pas si l'on survole la ScrollBar de la ScrollBox !

    Je n'ai jamais eu de soucis avec le molette souris sur un ScrollBox...
    Tu as du toujours du mettre des TEdit ou autre control sans Scroll mais pouvant prendre le Focus !
    Car si l'on met un TEdit dans un Panel lui m�me dans un ScrollBox
    Si l'on clique sur le Panel, pas de OnMouseWheel
    Si l'on clique sur le TEdit, le OnMouseWheel devient dispo !

    hors la c'est l'un des rares cas, o� ce la ne fonctionne pas le TImage qui ne prend pas le Focus et donc le ScrollBox non plus !

    Moi, j'avais eu le probl�me car je n'avais que des Labels et Image et TEdit, cela fonctionne, car par reflexe on clique dans l'edit, mais en cliquant sur le TImage (cela provoquait un Dialog), pas de Scroll

    jeanmichmuch66, tu as donc une solution, dans le OnClick de l'Image, tu fais un ScrollBox->SetFocus et cela activera la molette !
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #26
    Membre confirm�

    Homme Profil pro
    En recherche d'emploi sur la r�gion de Toulouse
    Inscrit en
    Novembre 2007
    Messages
    62
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : En recherche d'emploi sur la r�gion de Toulouse
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Billets dans le blog
    1
    Par d�faut
    Je suis d�sol�, j'ai beau essayer je n'y arrive pas.
    j'ai donc fait un "projet" avec dans une form, un Scrollbox dans lequel on trouve un TImage (plus grand que le Scrollbox) j'y ai donc rajout� le code que vous m'avez donn�, mais rien n'y fait.
    Je n'arrive pas a faire bouger le scrollbox.
    Je vous joint donc ce projet afin que vous puissez me dire ou je faute, svp.
    Je doit oublier un d�tail qui me bloque.
    Si vous trouvez la raison ou si vous d�buggez mon "projet" merci de me dire ou je faute .
    Un grand merci d'avance.
    Fichiers attach�s Fichiers attach�s

  7. #27
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 090
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 090
    Par d�faut
    Tu as oubli� la DFM, c'est con non !

    Sinon, tu n'as pas compris que le SetFocus c'�tait pour que l'on puisse obtenir des OnMouseWheel, OnMouseWheelDown ou OnMouseWheelUp pour qu'ensuite on puisse g�rer la molette et modifier la position dans la ScrollBox !

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ScrollBox1MouseWheel(TObject *Sender,
          TShiftState Shift, int WheelDelta, TPoint &MousePos, bool &Handled)
    {
      ScrollBox1->VertScrollBar->Position -= (WheelDelta / 60);
    }
    C'est � toi de g�rer le d�filement !
    En m�me temps, si tu ne lit pas nos r�ponses, on perd du temps !

    WheelDelta vaut souvent 120 ou -120, il me semble que cela correspond � 12� (le cran par d�faut de la plupart des souris)
    A toi, de trouver la vitesse de d�filement qui te convient
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #28
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Salut jeanmichmuch66
    La methode ScrollBox1MouseWheel ne fonctionne pas seul il faut donner le focus a la ScrollBox, le moyen est de passer par le MouseMove du TImage
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void __fastcall TForm1::ScrollBox1MouseWheel(TObject *Sender,
          TShiftState Shift, int WheelDelta, TPoint &MousePos, bool &Handled)
    {
    ScrollBox1->VertScrollBar->Position -= (WheelDelta);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
    ScrollBox1->SetFocus();
    }

  9. #29
    Membre confirm�

    Homme Profil pro
    En recherche d'emploi sur la r�gion de Toulouse
    Inscrit en
    Novembre 2007
    Messages
    62
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : En recherche d'emploi sur la r�gion de Toulouse
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Billets dans le blog
    1
    Par d�faut
    Toutes mes plates excuses il est vrai que j'avais survol� la r�ponse que j'avais en fait d�j� utilis� auparavant mais n'ayant pas le Focus du Scrollbox ne fonctionnait pas.
    J'avais fini par pensait que �a marchait tout seul quand on me disait il n'y a rien a faire �a marche tout seul ... tu donnes juste le focus ...

    Je vous remercie grandement pour votre aide.

    Il est vrai qu'avec la r�ponse maintenant �a semble �vident.
    Enfin bref , j'ai donc int�grer la fonction dans mon programme au bon endroit.
    Car je cr�e des images de fa�on dynamiques (quantit� variable) j'ajoute le mousemove avec le focus sur le scrollbox a la cr�ation des images et le tour est jou� !!!!

    Encore un grand MERCI a tous ceux qui mon aid� avec patience

Discussions similaires

  1. Comment cr�er l'�vennement MouseWheel sur un panel
    Par developppez dans le forum Windows Forms
    R�ponses: 7
    Dernier message: 08/05/2009, 22h09
  2. Intercepter l'�v�nement MouseWheel sur un contr�le MapPoint
    Par brazilia28 dans le forum Windows Forms
    R�ponses: 0
    Dernier message: 05/05/2009, 10h37
  3. Evenement MouseWheel sur un panel
    Par Rodrigue dans le forum C++/CLI
    R�ponses: 3
    Dernier message: 28/03/2008, 19h57
  4. mousewheel sur composant
    Par fafacpp dans le forum C++Builder
    R�ponses: 3
    Dernier message: 10/02/2007, 12h47
  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