jcavallo
Messages postés4Date d'inscriptionmardi 13 février 2007StatutMembreDernière intervention18 mai 2007
-
18 mai 2007 à 19:08
TeBeCo
Messages postés467Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention 9 mars 2011
-
15 juin 2007 à 23:19
Bonjour,
J'aimerais savoir comment programmer (simplement) une VScrollbar sur un windows form en VB2005.
Comment faire pour afficher avec la scrollbar la partie non visible du windows form.
J'effectue un dessin sur ce windows form, celui-ci prenant beaucoup de place j'aimerais pouvoir le faire défiler.
TeBeCo
Messages postés467Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention 9 mars 2011 15 juin 2007 à 23:19
la premiere chose serait au moment de l'evenement paint ou tout autre evenement succeptible de necessité une mise a jour de teste d'abord dans l'ordre :
* si les dimension ET AUSSI les positions des controls enfant depasse ou sont ailleurs via la collection de control et aussi via l'appelle au controle parent (je rapelle que pour un formulaire il faut utiliser le ".ClientSize" et non le ".size" qui permet d'eliminer les barre et bordure qui varie suivant les config de tout le monde)
ou alors t'as un "panel" (par exemple ca peut etre autre chose qui contient tout le reste et que tu dimensionnes toi meme en tenant compte d'eventuelles marges pour pas que les controle soient collés au bord)
* si ca va : on masque les scrollbar
* sinon : on delimite d'abord le contour interne pour ca 2 solutions :
> soit on profite de la boucle precedente qui a testé tout les controles pour recup les MinX, MaxX, MinY, MaxY qui corespondent au rectangle encadrant les controles en tenant compte d'eventuelles marges pour pas que les controle soient collés au bord
(si tu fait un "exit for" dans la boucle precedente pour gagner en temps c'est rater donc car sois tu refait un for pour les maxima soit tu inseres ce code dedans :p)
> soit tu connait deja le "panel" (par exemple cf plus haut) qui contient tous les controle enfants auquel cas tu a deja les fameux "MinX, MaxX, MinY, MaxY" (cf plus haut)
* Tu avises quelle scrollbar doivent etre affichée (en tenant compte de leur largeur/hauteur dans le calcul car ca compte aussi (et oui ^^))
*Tu releves la/les position(s) du/des scrollbar(s) affiché(s), tu calculs le ratio de positionnement via une constante de ton gout pour connaitre la sensibilité du scrollbar quand on le manipule, cela bien entendu depend de la "largeur" du curseur qui glisse (pour un horizontal) car plus il prend de place plus t'arrive vite a 100%
de maniere simple pour un scrollbar horizontal :0% : enfant.left 0 ou bien parent.left ca dépend si le systeme de coordonée se refere respectivement par rapport au controle parent ou au formulaire100% : enfant.right parent.right ouparent.width
idem a la verticale tu retrouvera tout seul je presume
mais en fait il faut pas utiliser de valeur comme ca mais plus une formule qui calcule la position en fonction du scroll et qui verifie les confition que j'ai ecrites plus haut
je fait tout de tête désolé pour les fautes et les accent manquant suis crevé :s
j'ai marqué des .Left ou .Right ect ... mais il faut passer par le ".location" qui est de type "Point" : enfant.location.x ==> .left ect ...
et pour le modifié faut penser a faire : toto.Location = new point (0, 0) 'repositionne en X=0 Y=0