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 :

ScrollBar Et ListBox - mollette


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 93
    Points : 46
    Points
    46
    Par défaut ScrollBar Et ListBox - mollette
    Bonjour,

    J'ai un léger problème sur lequel je suis depuis quelques jours.

    Mon application crée, à partir d'un fichier xml et d'une application en c++ un rapport présenté sous la forme suivante ( fichier jpg en attaché ).

    Et Donc dans mon programme quand je travail sur ce rapport et que je veux descendre la fenêtre avec ma molette, si j'ai modifié une listBox auparavant, il ne descend pas la page mais modifie la listbox.
    De plus lorsque je regarde le rapport sans avoir fait aucun clic la mollette n'a aucune action.

    Quelqu'un a-t-il une idée pour m'avancer ?

    J'ai quelques idées car j'ai repris le projet en cours de route et que pour cette partie il n'y a pas d'interface graphique, juste du code.

    Merci d'avance.
    voici une parcelle du code
    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
     
    __fastcall TVipRepView2::TVipRepView2(TComponent* Owner)
            : TScrollBox(Owner)
    {
            //this->DoubleBuffered = true;
     
     
            Document = NULL;
            HorzScrollBar->Smooth = true;
            VertScrollBar->Smooth = false;
            HorzScrollBar->Tracking = true;
            VertScrollBar->Tracking = true;
            ZoomFactor = 1.0f;
    }
     
     
    //////////////////////////////////////////////
    void TVipRepView2::RefreshScroolBox()                  .
    {       if (FDocument)
                    if(FDocument->Pages.size()!=0)
                    {
                        int NbPage = FDocument->Pages.size();
                        int TaillePage = (int)FDocument->Pages.at(1)->height;
                        int NumPageEnCours = ceil((float)VertScrollBar->ScrollPos/TaillePage);
                            // Pour l'instant on prend le cas d'une déscente
                            VertScrollBar->Increment = (NumPageEnCours + 1)*TaillePage - VertScrollBar->ScrollPos;
                            VertScrollBar->Increment = 30;
                            HorzScrollBar->Position = 15;
                            VertScrollBar->Position = 105;
                    }
            TScrollBox::Refresh();
    }
    Images attachées Images attachées  

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 93
    Points : 46
    Points
    46
    Par défaut
    Je n'ai pas été tres clair.

    En fait, lorsque je suis en train de travailler sur le rapport : il y a plusieurs cas de figures :
    - Je cherche dans les listbox le choix qui me convient.
    - Je tape le texte dans les Label directement.

    Et je désire donc que quelque soit l'action que l'on fasse la molette n'agisse seulement que sur l'ascenceur haut/bas qui permet de faire défiler le rapport.

    Si quelqu'un a une idée merci d'avance.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 93
    Points : 46
    Points
    46
    Par défaut
    ou en d'autres termes comment faire pour hooker les events molettes

  4. #4
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonjour,

    Si vraiment il s'agit d'un Hook, il y a toujours de très bons tutos: ici

    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 380
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 380
    Points : 1 766
    Points
    1 766
    Par défaut
    Salut !

    Je pense qu'il est possible de le faire au niveau de la form, en redéfinisant une partie du son gestionnaire de messages (parce que c'est la form qui transmet vers qui de droit).
    Je ne connais pas l'intitulé des messages relatifs à la molette donc... je ne donne que le principe !
    Dans ce cas précis, il suffit de dispatcher ces messages exclusivement vers le scrollbar cible et non plus à l'aveugle vers le premier objet de ce type ayant le focus !

    On serait dans le contexte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    BEGIN_MESSAGE_MAP
      MESSAGE_HANDLER(....)
    END_MESSAGE_MAP(TForm)
    Voir l'aide pour la Création de nouveaux gestionnaires de messages.

    A plus !

  6. #6
    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
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut Djang0
    Pour completer ce qu'a ecrit henderson
    dans le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // module de detection des messages
            void   __fastcall   TForm1::GetDeviceChange(TMessage &Msg);
            BEGIN_MESSAGE_MAP
            // WM_MBUTTONUP, WM_MBUTTONDOW, WM_MBUTTONDBLCLK
                  VCL_MESSAGE_HANDLER(WM_MOUSEWHEEL,TMessage,GetDeviceChange)
            END_MESSAGE_MAP(TForm)
    dans le .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void   __fastcall   TForm1::GetDeviceChange(TMessage &Msg)
    {
    ShowMessage("ok");
    // le code
    }
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

Discussions similaires

  1. scrollBars de ListBox
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/10/2009, 10h20
  2. Utiliser la scrollbar dans listbox enabled=false
    Par Peper89 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/06/2008, 15h16
  3. ScrollBar Horizontale ListBox
    Par Ju2Pom dans le forum C++Builder
    Réponses: 3
    Dernier message: 21/02/2007, 18h56
  4. [Listbox] ScrollBar Horizontal
    Par haleem dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/04/2005, 07h53

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