Vain Skrevet 27. august 2004 Del Skrevet 27. august 2004 jeg har en tekstboks med mange linjer med tekst. Hvordan hopper jeg direkte til starten av linje 5? Lenke til kommentar
Jonas Skrevet 27. august 2004 Del Skrevet 27. august 2004 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
Vain Skrevet 27. august 2004 Forfatter Del Skrevet 27. august 2004 Takk Jonas. 5 var jo bare et eksempel Lenke til kommentar
aadnk Skrevet 27. august 2004 Del Skrevet 27. august 2004 (endret) 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 27. august 2004 av aadnk Lenke til kommentar
Vain Skrevet 27. august 2004 Forfatter Del Skrevet 27. august 2004 Takk til deg og aadnk. Har ikke brukt for en raskere kode i dette programmet, men det er greit å vite hvordan man gjør det til en annen gang. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå