Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: vb rivien ja merkkien laskeminen

Aku2 [23.05.2003 11:39:54]

#

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.

thefox [23.05.2003 12:36:58]

#

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.

Aku2 [23.05.2003 13:46:34]

#

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?

thefox [23.05.2003 17:34:15]

#

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.

Aku2 [23.05.2003 17:59:53]

#

luinpas hyvin taas viesteisi :)
Olisi toi pitänyt jo huomata itsekin koodia enemmän tutkimalla, mutta ei.

Kiitokset kuitenkin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta