Kun teen Textboxin, niin kuinka saan selville kuinka monta riviä siihen on kirjoitettu ja kuinka monta merkkiä?
Esim:
Textbox1 = mihin tekstiä kirjoitetaan
Label1 näyttää montako riviä on kirjoitettu
Label2 näyttää montako merkkiä koko textboxissa on.
Mahdollisesti vielä label3, joka näyttää rivinumeron, jossa kursori on ja Label4 merkin määrän kursorin kohdalla sillä kyseisellä rivillä.
Tutkiskelin vanhoja viestejä ja koodeja kun muistikuva olisi, että tällaista on aikaisemminkin kysytty, mutta ei osunut silmään.
Merkkien määrä selviää luonnollisesti Len-funktiolla. Rivien määrän laskemiseen en keksi parempaa tapaa, kuin tekstiboksissa olevien cr+lf (rivinvaihto)-yhdistelmien määrän laskemisen. Len-funktiolla saatuun merkkien määrään kuuluu mukaan myös rivinvaihdot, eli voit tarpeen vaatiessa vähentää sen antamasta luvusta (2*rivinvaihtojen_maara) saadaksesi pelkkien merkkien määrän.
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) Label2.Caption = "Merkkejä: " & Len(Text1.Text) Dim n As Integer, riveja As Integer, cur_rivi As Integer riveja = 1: cur_rivi = 1 For n = 1 To Len(Text1.Text) If Mid(Text1.Text, n, 2) = vbCrLf Then riveja = riveja + 1 If n = Text1.SelStart Then cur_rivi = riveja Next Label1.Caption = "Rivejä: " & riveja Label3.Caption = "Kursorin rivi: " & cur_rivi Label4.Caption = "Kursorin merkin numero: " & Text1.SelStart + 1 End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) Text1_KeyDown 0, 0 End Sub Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) Text1_KeyDown 0, 0 End Sub
TJSP.
Jees. toi näyttäisi toimivan kuten pitääkin.
Kiitokset.
Jos joku keksii parempia tapoja hoitaa jotakin noista, niin kertokaa ihmeessä.
Huomasin, että enterin painallus tekee laskuriin 2 lisämerkkiä. :/
Saisko tuon pois?
Itseäni lainatakseni:
lainaus:
Len-funktiolla saatuun merkkien määrään kuuluu mukaan myös rivinvaihdot, eli voit tarpeen vaatiessa vähentää sen antamasta luvusta (2*rivinvaihtojen_maara) saadaksesi pelkkien merkkien määrän.
Eli muuta tämä rivi:
Label2.Caption = "Merkkejä: " & Len(Text1.Text)
Muotoon:
Label2.Caption = "Merkkejä: " & Len(Text1.Text) - (2 * (riveja - 1))
Ja siirrä se tuon rivimäärän laskun alle.
luinpas hyvin taas viesteisi :)
Olisi toi pitänyt jo huomata itsekin koodia enemmän tutkimalla, mutta ei.
Kiitokset kuitenkin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.