Gå til innhold

hoppe direkte til en linje i textboks?


Anbefalte innlegg

Videoannonse
Annonse

Private Sub Command1_Click()

Dim buff, linje, i, buff2
buff = Split(Text1.Text, Chr(13))
linje = 5

If UBound(buff) >= linje - 1 Then

   For i = 0 To linje - 2
   
       buff2 = buff2 + Len(buff(i))
       
   Next i

   Text1.SetFocus
   Text1.SelStart = buff2 + linje

End If

End Sub

5 kan byttes ut med hva som helst ;)

Lenke til kommentar

Jonas' eksempel var jo både nyttig og enkelt, men den kan være relativ treig i tillfeller med masse tekst. Istedenfor å finne en linjes posisjon manuelt, kan vi bruke den interigerte funksjonen, men den er dessverre ikke implimert i klassen TextBox. Derfor må vi kalle denne med API:

 

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

Const EM_LINEINDEX = &HBB

Private Sub cmdMoveToLine_Click()

Dim CharIndex As Long

' Finn den første bokstaven i linjens indeks. 4 blir linje 5, da tellingen begynner på 0
CharIndex = SendMessage(txtTest.hwnd, EM_LINEINDEX, 4, ByVal 0&)

txtTest.SetFocus ' Husk å sette fokus til tekstboksen
txtTest.SelStart = CharIndex ' Sett posisjonen

End Sub

 

Jeg vil tro denne koden skulle kjøre mye raskere, men du velger selvsakt selv om du synes det er nødvendig.

Endret av aadnk
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...