Miten saa "välkkyvän" (kursorin?!) Textboxissa tietylle riville. Eli miten tietyn rivin saa aktivoitua multiline textboxissa?
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.
Entä miten saa tiedettyy missä "kursori" on? Esim. jos se on 15:nnentoista rivin 6:nnella merkillä, näkyisi esim. labelissa 15:6
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
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!
Joo - selstartti on 0 mut tarkotus ois et kursori ois 15:nnel toist rivil... Et miten sen sais määriteltyy?
oon oikeesti ina n00bi
Eiku leikisti
heh. no mut osaaks joku auttaa?!?
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
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.
jaa-a
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
Aihe on jo aika vanha, joten et voi enää vastata siihen.