cs_rejean
Messages postés2Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention 7 septembre 2008
-
7 sept. 2008 à 05:28
cs_rejean
Messages postés2Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention 7 septembre 2008
-
7 sept. 2008 à 21:55
Bonjour, je suis nouveaux en visual basic 6 et j'aimerais savoir comment controler le VScrollbar d'un Textbox et d'un Listbox avec mon propre scrollbar ou comment creer mon propre Textbox avec un scrollbar que je peut modifier les images du scrollbar pour l'adapter a mon skin, merci et aux plaisirs de vous lire.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 7 sept. 2008 à 08:43
Bonjour,
Pas de problème en ce qui concerne la listbox, qui répond à l'évènement scroll... Il te suffit alors de donner à ta scrollbar perso une valeur maximum correspondant au nombre d'articles de ta listbox et de jouer ensuite avec la propriété topindex en fonction de la valeur en cours de ta scrollbar... (simple).
Il en va différemment en ce qui concerne ta textbox, qui ne répond pas à un évènement scroll, ce qui t'engagerait à faire de très nombreux calculs alourdissant ton appli. Le truc serait alors de mettre ta textbox (avec ses dimensions maximum, en fonction du texte qu'elle contient) à l'intérieur d'un cadre. Il te faudra ensuite faire glisser ta textbox dans le cadre en fonction de la valeur de ta scrollbar perso. Ce sera quand même du boulot ...
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 7 sept. 2008 à 16:09
salut,
les infos données par jmfmarques (salut) sont tout à fait correctes
il est néanmoins possible de passer simplement par les API
ici testé avec une valeur fixe de 30 lignes : poser une VScroll à côté d'une textbox multiligne sans scrollbar
Option Explicit
Private Const
EM_GETFIRSTVISIBLELINE
As Long
=
&HCE
Private Const
EM_LINESCROLL
As Long
=
&HB6
Private Declare Function
SendMessage
Lib
"user32"
Alias
"SendMessageA"
(
ByVal
hwnd
As Long
,
ByVal
wMsg
As Long
,
ByVal
wParam
As Long
, lParam
As Any
)
As
Long
Private Sub
Form_Load()
Dim i As Integer
Text1.Text = "1.
abcdefgh"
For i = 2 To 30
Text1.Text = Text1.Text & vbCrLf & i & ". abcdefgh"
Next i
VScroll1.Min = 1
VScroll1.Max = 30
End Sub
Private Sub VScroll1_Change()
Dim lTopRow As Long
lTopRow = SendMessage(Text1.hwnd, EM_GETFIRSTVISIBLELINE,
ByVal 0&, ByVal 0&) + 1
Call SendMessage(Text1.hwnd, EM_LINESCROLL, ByVal 0&, ByVal VScroll1.Value - lTopRow)
End Sub
++
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp