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

VB 6 et antérieur Discussion :

[VB]Scrollbar à plus de 32 500


Sujet :

VB 6 et antérieur

  1. #1
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut [VB]Scrollbar à plus de 32 500
    Bonjour, je chercherais à faire une scrollbar qui admet environ 150 000 degrés.
    si quelqu'un à une idée...

    merci

  2. #2
    scr
    scr est déconnecté
    Membre éprouvé
    Inscrit en
    Juin 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 127
    Par défaut
    La faire toi même et l'implementer avec des long plutot qu'avec des INT pour eviter la limitation !

    Mais peut être que cela existe déja !

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Si avant tu divisait ton nombre de 150000 par 5, cela te donnerai un chiffre inférieur à 32500. Donc un pas de 5 au lieu de 1.


    Starec

  4. #4
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    désolé, je raconte n'importe quoi ( j'ai posté ce message trés vite) je cherche à faire une scrollbar et non pas une progressbar à plus de 32 500. surtous que les progressbar vonts jusqu'a 56000... et que ayant déja eu ce problème, j'en ai créée une jusqu'a 10^112. donc si vous avez une idée pour la srcrollbar, merci, et désolé pour l'erreur.

    salut

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    J'y ai réfléchi, mais sans trouver de solution...
    Car je pense que ton pas doit rester fixé à 1, n'est-ce-pas ?

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    J'avais également pensé à une astuce assez scabreuse :

    je te la dis au cas où...

    1) Faire un scrollbar avec un maxi de 10000 (par exemple)
    2) chaque fois que la valeur maxi est atteinte, incrémenter ton tag (1,2...etc) et revenir au début du scroll
    3) lire les valeurs du scroll en y ajoutant 10000*la_valeur_du_tag

    ........ Mais c'est une solution "marquésienne".... (Marqués, c'est moi.....)



    EDIT :Tiens !!!

    Une basile "délestage", présente il y a peu, vient de disparaître

    Que Raro !!!

  7. #7
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    Tu mets ta valeur minimale à la plus petite valeur négative possible et tu ajuste dans le code pour avoir des entiers positifs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
    Const ajust = 32768
     
    Private Sub Form_Load()
    HScroll1.Min = -32768
    HScroll1.Max = 32767
    HScroll1.Value = -32768
    Label1.Caption = 0
    End Sub
     
    Private Sub HScroll1_Scroll()
    Label1.Caption = HScroll1.Value + ajust
    End Sub
    Tu peux ainsi te rendre à 65535 mais pas à 150000.

    Faudra en fabriquer une.

  8. #8
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    I moa zinsiste sour la solusssion qué jé di quelle été scabreuzzze...
    (lé pas di tout)


  9. #9
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Citation Envoyé par jmfmarques
    I moa zinsiste sour la solusssion qué jé di quelle été scabreuzzze...
    elle est évidement bien vu que j'y ai déja pensé.( )

    non, le probleme, qui est égualement vallable avec zazaraigné, est de pouvoir faire une scrollbar qu'i peut s'incrémenter de 0 à 10^17.

    ja'i déja le système mathématique (j'ai fait une bibliotèque de nombre avec les opérations de base (sauf division parun nombre > 10^28) qui monte jusque'a 10^112.
    à la limite, comme le dit zaza, un ocx serait parfait sauf... que je ne vois pas comment donner une valeur arbitraire à la scroll quand on la déplace (et je n'ai encore jamais fait d'ocx).

    merci

  10. #10
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Bon ! je viens de mettre en oeuvre ma petite astuce :

    Tout va bien, sans limite autre que celle d'un long !

    Dans la foulée, on peut aller en dessous de 0, sans limite non plus

    Seul problème d'ergonomie : pour "grimper", celà va tout seul, mais pour "descendre" il faut, par tranches de 10000 (chaquefois que le scrollbar est à 0), utiliser un petit commandbutton.

    Si çà t'intéresse, tu dis..


  11. #11
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    je problème, est que je veut REELLEMENT une scrollbar continue. je suis en train de créer un controle qui fasse ça.

    salut

  12. #12
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Et comment l'utilisateur va s'en servir, puisqu'en déplacement le curseur d'un seul pixel, il va dérouler 10^14 lignes

  13. #13
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Bon ! une autre solution, mais elle ne permet pas d'avancer "à grands pas", sauf si l'on change dynamiquement la valeur du contrôle ou sa propriété "increment" :

    utilisation du contrôle Updown de Common Control 2.6.0

    Son avantage : il "couvre toute ta plage"
    Son inconvénient : il va de 1 en 1 et oblige, comme je l'ai dit plus haut, à changer dynamiquement la valeur ou sa propriété "increment" si l'on veut "avancer à grand pas"

    Je continue à chercher...


  14. #14
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Citation Envoyé par Tofalu
    Et comment l'utilisateur va s'en servir, puisqu'en déplacement le curseur d'un seul pixel, il va dérouler 10^14 lignes
    tient. bonne question je n'y avais pas penser mais incrémenter 1 par 1 c'est pas suffisant toutes les 10^14 lignes...
    ^peut-être avec une progressbar "Pas" et cette progressbar... non?

  15. #15
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Autre idée :
    une variable titi = false
    un picturebox en forme de rectangle étroit et :
    1) pour les avancements pas à pas :
    a) dans événement mousedown :
    if.....(si un bouton/souris_de_ton choix est pressé) then
    titi = true
    while titi = true
    valeur = valeur + 1
    wend
    end if
    b) dans l'événement mouseup :
    titi = false

    pour les avancement à grands pas : un drag and drop d'un objet quelconque avec relèvement de la position et calcul de la valeur

    çà doit pouvoir se faire relativement facilement...

    Je continue à chercher...


  16. #16
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    J'ai pensé combiner deux scrollBars. Mais y'a un problème d'overflow.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
    Dim valeur As Long
     
    Private Sub HScroll1_Scroll()
    valeur = HScroll1.Value + HScroll2.Value * 1000
    Label3.Caption = valeur
    End Sub
     
    Private Sub HScroll2_Scroll()
    valeur = HScroll1.Value + HScroll2.Value * 1000 'ça plante ici
    Label3.Caption = valeur
    End Sub

  17. #17
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Zazaraignée: l'overflow n'est pas un problème, comme je l'ai déja dis, j'ai fabriqué une bibliotèque qui va jusqu'a 10^112 en entiers avec les opérateurs de base et de comparaison.

    le problème, est que je préfererais avoir une scrollbar.

    Jfmarques: c'est ce que j'ai commencé à faire depuis avant-hier mais j'ai un problème: même en faisant défiler les +1 ou en utilisant le drag & drop, si l'utilisateur bouge sa progressbar ne serai-ce que d'un milième de lalongueur totale, il saute 10^14 index d'un coups.
    même en faisant un indice qui augmente de 100 000 par seconde, ç'est trés largement insufissant: il mettra 12 000 jours à parcourir l'interval alant de d'un milème à un autre.

    je cheche donc un système qui permet de faire une augmentation exponentielle de la vitesse en fonction du temps avec la methode gettickcount.
    le seul problème, est de pouvoir le faire en fonction du nombre d'indervales possibles dans la progressbar (en fonction de sa taille.)


    salut

  18. #18
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    C'est en effet un problème ardu.
    C'est dommage que tu veuilles absolument un seul contrôle. Il y aurait bien l'idée d'un 2ème tout petit scrollbar dont la fonction (un peu comme pour les vis micrométriques) serait de modifier les propriétés du Scroll Principal pour les "ajustements fins"... mais ce serait également un 2ème contrôle et tu n'en veux pas...

    Mon idée de drag and drop ne convient pas non plus du seul fait qu'on n'aurait même pas assez de pixels disponibles, y compris avec des résolutions élevées...

    Je continue à me creuser les méninges, mais je sens que la solution, s'il en est, sera plus le résultat d'une gysmnastique de la pensée qu'autre chose.

    EDIT : Tu as probablement déjà jeté un coup d'oeil (j'en suis sur) à :
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/scrollbars/scrollbarreference/scrollbarfunctions/setscrollrange.asp

    On est encore à 32 bits .... bientôt, sans doute, le 64 bits... mais même ainsi on n'atteindrait pas les 1500100 pas dont tu as besoin.


  19. #19
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    he bien non, je ne l'avais pas vu
    et... je dois avouer que je ne l'ai pas compris...
    pourrais-tu m'expliquer s'il te plait?

    merci

  20. #20
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    ce qu'il faut y noter, pour ce qui t'intéresse, c'est cette partie là :

    Because the messages that indicate scroll bar position, WM_HSCROLL and WM_VSCROLL, are limited to 16 bits of position data, applications that rely solely on those messages for position data have a practical maximum value of 65,535 for the SetScrollRange function's nMaxPos parameter.
    Losque (comme on le sait déjà) Windows fonctionnera en 64 bits, la valeur maximum de lecture se fera vraisemblablement sur 32 bits et passera à un peu plus de 130.000 pour le "scrollrange" (plage de valeurs du scroll).
    et ce ne sera toujours pas assez ...

Discussions similaires

  1. [MySQL] Base de donées continents/pays/district/ville mondiale : plus de 3 500 000 villes
    Par diffy dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/07/2008, 02h26
  2. [Scrollbar] Changer plus que la couleur, le style!
    Par FrankOVD dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 07/03/2006, 15h31
  3. [C#] datagrid enable = false --> plus de scrollbar??
    Par cortex024 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/01/2006, 19h19

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