Scrollbar

Résolu
cs_rejean Messages postés 2 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 7 septembre 2008 - 7 sept. 2008 à 05:28
cs_rejean Messages postés 2 Date d'inscription jeudi 23 décembre 2004 Statut Membre Derniè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.

3 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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 ...
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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

 
3
cs_rejean Messages postés 2 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 7 septembre 2008
7 sept. 2008 à 21:55
Merci pour l'aide, ca fonctionne
0
Rejoignez-nous