Ga naar inhoud

[vb6] Textbox automatisch naar beneden scrollen


Aanbevolen berichten

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.
Link naar reactie
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 ]
Link naar reactie
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 ]
Link naar reactie
Ik heb deze code ook op een richtextbox toegepast en het werkt. Alleen werkt het een beetje te goed, de tekst scrollt dus helemaal uit beeld. Het aantal te scrollen regels verminderen helpt niet echt want Temp wordt de totale hoeveelheid regels die er in de textbox aanwezig zijn. Ik kon niet zo snel een methode vinden om te achterhalen op welke regel we zitten dus ik weeet niet hoeveel regels ik minder moet scrollen. Wat wel kan is eerst helemaal terug scrollen en dan vooruit - 2, maar ergens vind ik dat niet zo praktisch. Mijn oplossing is: [code:1:2d6aa5371b]Public Sub ScrollDownTextBox(Textbox As Control, Optional rtfBox As Boolean = False) 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) 'Scroll backwards if RTF If rtfBox Then Temp = SendMessage(Textbox.hwnd, EM_LINESCROLL, 0, ByVal -2) End If End Sub[/code:1:2d6aa5371b] Oftewel, ik scroll 2 regels terug door het gebruiken van een negatief getal. Het leuke van een Optional statement is dat je het niet hoeft te gebruiken; de waarde wordt dan automatisch False. In je terminal programma hoef je dus niets te veranderen. _________________ I'm not a complete idiot, some parts are missing. [ Dit Bericht is bewerkt door: DarkScribe op 2002-03-03 08:09 ]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...