Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

[vb6] Textbox automatisch naar beneden scrollen

DarkScribe
6 antwoorden
  • Hallo Allen,

    Ik heb een vraagje.

    Hoe kan ik een textbox (Of andere control's) automatisch naar beneden laten scrollen.

    Ik ben momenteel bezig om een terminal programmatje te schrijven en ik gebruik een textbox om de data weer te geven.

    Maar als ik nu de nieuwe data toevoeg aan de textbox gaat deze weer terug naar het begin en moet je met de hand terug scrollen naar beneden. Dit moet volgens mij wel automatisch kunnen…..

    Alvast bedankt.
  • Onderstaande code doet precies wat jij wilt. Dit is van toepassing op een Form (Form1) met 1 textbox (Text1) en 1 button (Command1).

    [code:1:e0ee8ec276]Option Explicit

    'Declereer de functie SendMessage en een relevante constante
    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 Const EM_LINESCROLL = &HB6

    Sub Form_Load()
    Dim Gelukt As Long 'Waarde die terug gegeven wordt door SendMessage
    Dim t As Integer 'Tellertje

    'Zet 20 regels in een textbox
    For t = 1 To 20
    Text1.Text = Text1.Text & "Dit is regel " & t & vbCrLf
    Next t

    'Zet de cursor aan het einde van de tekst
    Text1.SelStart = Len(Text1.Text)

    'Scroll 40 regels, scrollt niet meer regels dan aanwezig, of 40, whichever comes first
    'Gelukt wordt 1 als de textbox een multiline box is, anders wordt Gelukt 0
    Gelukt = SendMessage(Text1.hwnd, EM_LINESCROLL, 0, ByVal 40)
    End Sub

    Private Sub Command1_Click()
    Unload Me
    End Sub[/code:1:e0ee8ec276]
    Ik denk dat het ook werkt met andere controls maar dat moet je zelf maar testen.

    Oh ja, je kunt ook het aantal regels vinden met dezelfde functie, dan moet je een constante maken

    [b:e0ee8ec276]Private Const EM_GETLINECOUNT = &HBA[/b:e0ee8ec276]

    en de functie wordt dan

    [b:e0ee8ec276]Gelukt = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0&, ByVal 0&)[/b:e0ee8ec276]

    Gelukt wordt hier dus het aantal regels aanwezig, 1 als er geen regels zijn.

    _________________
    I'm not a complete idiot, some parts are missing.

    [ Dit Bericht is bewerkt door: DarkScribe op 2002-03-01 17:25 ]
  • PERFECT!!!!! Dank je wel!

    Ik heb nu de 2 gelukt-jes bij elkaar gevoegd. Zodat 1st wordt gekeken hoeveel regels er zijn en daarna wordt de textbox naar beneden gescrolled.

    Dank je!
  • Dacht wel dat je dat zou doen, daarom had ik het postje ook bewerkt. :grin:
  • :razz: :grin:
  • En nu hebben we een mooie Module zodat het voor elke textbox werkt….

    [code:1:c6df22e6c3]Option Explicit

    'Declereer de functie SendMessage en een relevante constante
    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 Const EM_LINESCROLL = &HB6
    Private Const EM_GETLINECOUNT = &HBA

    Public Sub ScrollDownTextBox(Textbox As Control)
    Dim Temp As Long ' Return value of SendMessage

    ' Place cursor at the end of the text
    Textbox.SelStart = Len(Textbox.Text)

    ' Get number of rows
    Temp = SendMessage(Textbox.hwnd, EM_GETLINECOUNT, 0&, ByVal 0&)

    ' Scroll Temp rows.
    Temp = SendMessage(Textbox.hwnd, EM_LINESCROLL, 0, ByVal Temp)
    End Sub[/code:1:c6df22e6c3]

    :grin:

    [ Dit Bericht is bewerkt door: one_234 op 2002-03-03 00:26 ]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.