Bonjour, je chercherais à faire une scrollbar qui admet environ 150 000 degrés.
si quelqu'un à une idée...
merci![]()
Bonjour, je chercherais à faire une scrollbar qui admet environ 150 000 degrés.
si quelqu'un à une idée...
merci![]()








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 !

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
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![]()
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 ?
![]()
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 !!!
Salut
Tu mets ta valeur minimale à la plus petite valeur négative possible et tu ajuste dans le code pour avoir des entiers positifs.
Tu peux ainsi te rendre à 65535 mais pas à 150000.
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
Faudra en fabriquer une.
I moa zinsiste sour la solusssion qué jé di quelle été scabreuzzze...
(lé pas di tout)
![]()
![]()
![]()
elle est évidement bien vu que j'y ai déja pensé.(Envoyé par jmfmarques
)
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![]()
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..
![]()
je problème, est que je veut REELLEMENT une scrollbar continue. je suis en train de créer un controle qui fasse ça.
salut![]()
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![]()
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...
![]()
tient. bonne question je n'y avais pas penser mais incrémenter 1 par 1 c'est pas suffisant toutes les 10^14 lignes...Envoyé par Tofalu
^peut-être avec une progressbar "Pas" et cette progressbar... non?
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...
![]()
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
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![]()
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.![]()
![]()
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![]()
ce qu'il faut y noter, pour ce qui t'intéresse, c'est cette partie là :
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).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.
et ce ne sera toujours pas assez ...
![]()
Partager