Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Tietty rivi textboxista

Sivun loppuun

miiro [04.03.2004 20:13:33]

#

Miten saa "välkkyvän" (kursorin?!) Textboxissa tietylle riville. Eli miten tietyn rivin saa aktivoitua multiline textboxissa?

setä [04.03.2004 20:37:17]

#

Mulla oli tohon TextBoxin rivien määrään joskus ratkaisu käyttää SendKeys-lausetta. Tässä sama juttu. Aseta ensin kursori TextBoxin alkuun (Text1.SelStart = 0). Lähetä sitten nuolialas merkkejä N-1 kpl (N on haluttu rivinumero)

Text1.SelStart = 0
Text1.SetFocus
For I = 1 to N-1
   SendKeys "{DOWN}"
Next

Kursori on nyt halutun rivin alussa. Jos haluat sen rivin loppuun, lähetä vielä END-koodi.

miiro [05.03.2004 15:16:32]

#

Entä miten saa tiedettyy missä "kursori" on? Esim. jos se on 15:nnentoista rivin 6:nnella merkillä, näkyisi esim. labelissa 15:6

miiro [05.03.2004 15:46:01]

#

Oon nimittäin tekemässä html-editori ohjelmaa. en kuitenkaan ihan WYSIWYG-editoria...


Ois kiva jos vastaisitte tohon mun kysymykseen

lainaus:

Entä miten saa tiedettyä missä "kursori" on? Esim. jos se on 15:nnentoista rivin 6:nnella merkillä, näkyisi esim. labelissa 15:6

setä [05.03.2004 16:33:22]

#

SelStart toimii sekä funktiona että käskynä. Voit asettaa kursorin haluamaasi kohtaan tai lukea missä kohtaa kursori on. Monirivisellä textBoxilla täytyy selvittää ensin mikä on Selstartin arvo rivin alussa. Jossain rivin keskellä SelStartin arvosta vähennetään tuo rivin alun SelStart niin saadaan sitten kyseisellä rivillä monesko merkki on menossa. On muuten hienot hiihtokelit. Käykää hiihtämässä hyvät ihmiset!

miiro [05.03.2004 18:10:50]

#

Joo - selstartti on 0 mut tarkotus ois et kursori ois 15:nnel toist rivil... Et miten sen sais määriteltyy?

miiro [05.03.2004 18:19:59]

#

oon oikeesti ina n00bi

T.M. [05.03.2004 18:21:53]

#

Eiku leikisti

miiro [05.03.2004 18:31:21]

#

heh. no mut osaaks joku auttaa?!?

minapamina [05.03.2004 18:48:59]

#

Tässä olis tämmönen nopeasti kyhätty juttu,
jossa on vielä parannettavaa.
(heittää esim. erroria jos on vain 1 rivi)

For i = 1 To Text1.SelStart
    merkit = Mid(Text1.Text, i, 2)

    If merkit = vbCrLf Then a = a + 1

Next i

q = Text1.SelStart
Do

DoEvents

q = q - 1
Loop Until Mid(Text1.Text, q, 2) = vbCrLf

q = Text1.SelStart - q - 1


MsgBox a & ":" & q

setä [05.03.2004 18:57:45]

#

Jos haluat labeliin jatkuvasti päivittyvän rivi ja sarakenumeron, niin tuo minapaminan koodi suoritetaan joka kerta kun heität kursorin hiirellä uuteen paikkaan. Jos käytät näppäimiä, voi laskureita päivittää helpommin. Tuossa yo koodissa kannattaisi käyttää InStr-funktiota Mid-funkion asemasta, jolloin koodi on paljon nopeampi. Ilmeisesti edittorikäytössä joka rivi päättyy rivinvaihtomerkkiin. Muuten noiden vbCrLf-merkkien laskenta heittää, jos textBoxissa on automattinen rivitys.

miiro [05.03.2004 19:12:22]

#

jaa-a

Antti Laaksonen [05.03.2004 23:24:49]

#

Tällä koodilla voi selvittää kohdistimen rivin ja sarakkeen. Toiminta perustuu SelStart-ominaisuuteen, Instr-funktioon, joka palauttaa merkkijonon sijainnin toisessa merkkijonossa, ja tietoon, että joka rivin lopussa on rivinvaihto (vbCrLf).

Dim kohta As Integer, rivi As Integer, sarake As Integer
kohta = InStr(Text1.Text, vbCrLf)
rivi = 1
sarake = Text1.SelStart + 1
While kohta < Text1.SelStart And kohta <> 0
    rivi = rivi + 1
    sarake = Text1.SelStart - kohta
    kohta = InStr(kohta + 2, Text1.Text, vbCrLf)
Wend

MsgBox rivi & ":" & sarake

Sivun alkuun

Vastaus

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

Tietoa sivustosta