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

IHM Discussion :

Synchroniser les barres de défilement verticales de 3 zones de liste


Sujet :

IHM

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 175
    Points : 129
    Points
    129
    Par défaut Synchroniser les barres de défilement verticales de 3 zones de liste
    Bonjour,

    J'ai un formulaire contenant 3 zones de liste distinctes contenant toujours la même liste d'enregistrements dans la 1ère colonne et des données différentes à côté.
    Ces zones de liste ne doivent pas être fusionnées.

    Je souhaiterais faciliter la lecture de l'utilisateur en synchronisant le déroulement des barres verticales de ces listes. Ainsi les lignes seront toujours alignées les unes par rapport aux autres.

    Pour celà j'ai essayé d'utiliser la dll MouseWheelDVP proposée par Arkham pour capter l'utilisation de la molette de la souris et le répercuter sur chacune des listes. Le problème c'est que je travaille sous Access97 et je n'arrive pas à :
    1. capter l'événement mousewheel alors que j'ai bien référencé la dll
    2. piloter le scrolldown/scrollup d'une zone de liste

    Auriez-vous le temps de m'aider dans ma recherche ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je t'avoue que je ne vois pas comment faire, car il n'y a aucun évènement pour intercepter le mouvement des barres de défilement dans les zones de listes.

    Pourrais-tu détailler un peu plus, pourquoi ?

    Il me semble que quelqu'un avait trouvé une solution pour synchroniser deux formulaires, à mon avis cela pourrait remplacer tes zones de listes.

    Starec

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 175
    Points : 129
    Points
    129
    Par défaut
    Citation Envoyé par Starec Voir le message
    Bonjour

    Je t'avoue que je ne vois pas comment faire, car il n'y a aucun évènement pour intercepter le mouvement des barres de défilement dans les zones de listes.
    Aïe ! Je pensais que c'était faisable.

    Citation Envoyé par Starec Voir le message
    Pourrais-tu détailler un peu plus, pourquoi ?
    Si je schématise, j'ai une liste de références pour lesquelles l'utilisateur va saisir des prévisions chiffrées dans une matrice annuelle.

    L'étape principale est organisée comme ceci :
    - une 1ère liste à gauche affiche le résultat d'un calcul basé sur l'historique des années précédentes.
    - une 2ème au milieu récapitule les tendances marché et autres paramètres qui peuvent suggérer à l'utilisateur de nuancer les chiffres proposés dans la 1ère liste.
    - une 3ème récapitule les valeurs saisies par l'utilisateur avec un bouton permettant d'acceder à une table en écriture pour modifier celles-ci.

    Ces trois zones de liste ont toutes exactement les lignes, dans le même ordre, c'est pourquoi je souhaiterais que leur défilement soit synchronisé, afin de simplifier la lecture de cet écran qui contient beaucoup de valeurs.

    Citation Envoyé par Starec Voir le message
    Il me semble que quelqu'un avait trouvé une solution pour synchroniser deux formulaires, à mon avis cela pourrait remplacer tes zones de listes.
    Oui et non... le format des sous-formulaires en mode feuille de données est trop grand pour que toutes mes données s'affichent dans 1 seul écran. Je perds alors le bénéfice principal de mon formulaire qui est de comparer en 1 coup d'oeil les valeurs calculées, les facteurs de nuance et les valeurs finalement saisies.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 175
    Points : 129
    Points
    129
    Par défaut
    Bonjour,

    je reviens poster une ébauche de solution qui ressemble plus à une bidouille qu'autre chose...

    Ne pouvant pas maîtriser l'événement de défilement de la zone de liste, je m'appuie sur la propriété .Selected() car lorsque l'on exécute la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaListe.Selected(i) = true
    ...si la ligne i n'est pas à l'écran, la barre de défilement se déplace de façon à afficher celle-ci.

    Vous voyez où je veux en venir...??

    Pour faire simple : Je dimensionne mes zones de liste de façon à ce qu'elles affichent toutes le même nombre de lignes. Ce nombre est contenu dans une variable que j'ai appelé listsize et placée dans le Form_Load() avec mon autre variable scrollposition qui indique la position relative de ma barre de défilement.

    Ainsi avec mes 2 boutons je fais monter et descendre simultanément les barres de défilement de mes zones de liste.

    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
    Private Sub Form_Load()
        listsize = 28    'Mes zones de liste affichent 28 lignes à l'écran
        scrollposition = listsize
    End Sub
     
    Private Sub Btn_Scrolldown_Click()
        If scrollposition < MaListe1.ListCount - 1 Then scrollposition = scrollposition + 1
        MaListe1.Selected(scrollposition) = True
        MaListe1.Selected(scrollposition) = False
        MaListe2.Selected(scrollposition) = True
        MaListe2.Selected(scrollposition) = False
        MaListe3.Selected(scrollposition) = True
        MaListe3.Selected(scrollposition) = False
    End Sub
     
    Private Sub Btn_Scrollup_Click()
        If scrollposition > listsize Then scrollposition = scrollposition - 1
        MaListe1.Selected(scrollposition - (listsize - 1)) = True
        MaListe1.Selected(scrollposition - (listsize - 1)) = False
        MaListe2.Selected(scrollposition - (listsize - 1)) = True
        MaListe2.Selected(scrollposition - (listsize - 1)) = False
        MaListe3.Selected(scrollposition - (listsize - 1)) = True
        MaListe3.Selected(scrollposition - (listsize - 1)) = False
    End Sub

    Et voilà... la prochaine étape est de combiner cette trouvaille avec l'événement MouseWheel pour se débarasser des 2 boutons très moches et utiliser la molette de la souris pour le même résultat.

    @+

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour.

    Très intéressant, tiens nous au courant du résultat final.

    Starec

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 175
    Points : 129
    Points
    129
    Par défaut
    Citation Envoyé par Starec Voir le message
    Très intéressant, tiens nous au courant du résultat final.
    No problem !
    Il me reste juste à résoudre ce point : MouseWheel & Zone de liste

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/11/2006, 20h10
  2. [Débutant] ajout d'une barre de défilement verticale
    Par lyim dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/03/2006, 16h19
  3. [div][scrollbar]lier les barres de défilement entre elles
    Par snoop dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 23/02/2006, 16h59
  4. Afficher les barres de défilement (scrollbar) sous FF
    Par _Mac_ dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/11/2005, 14h51
  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