Saako useampia textiboxseja "linkitetty" yhteen sillein, että jos vaikka yhdessä on vain pystysuunnassa liukusäädin, niin sen käyttäminen vaikuttaa samanlailla muihinkin textiboxseihin tai sitten vaikka jos kaikissa on liukusäädin, niin kaikki liukusäätimet liikkuvat samanlailla yhtä liukua käytämällä, rivimäärä niissä textiboxseissa olisi kaikissa sama.
Miten sen liukusäätimen asennon saa muuttujaan, vaikka ylin näkyvä rivi.
Onnistuu 99% varmasti subclassaamalla kaikki tekstibokseihin menevät viestit, mutta tietysti subclassaamisen opettelu on aikaavievää ja myös hermojaraastavaa, kun todennäköisesti opetellessa koodi kaatuu tai jää lukkoon varsin usein.
Pelkin "normaalein" API-komennoin ilman subclassaamista onnistuu muuttaa kyllä skrollien arvoja, mutta tekstikentän sisältö ei vieri. Nimimerkillä kokeiltu on.
Voi hitsi.
Miten sen skrollien arvon saa luettua muuttujaan?
Muuttuja = Vscroll.value
tesmu kirjoitti:
Muuttuja = Vscroll.value
Tuo toimii erillisillä scrollbareilla mutta ei tekstiruudun scrollbareilla. En ole varma voisiko tuon ongelman ratkaista jotenkin erillisillä scrollbareilla. Vierityksenhän saa aikaan kursorin paikka siirtämällä. Kun tekstiruutujen sisällöt ovat erilaisia voi olla hankalaa siirtää joka ruudussa samalle riville paitsi jos joka rivin perässä on vbCrLf.
Siellä rivien perässä olis rivinvaihtomerkki ja niissä textiboxseissa kaikissa olisi sama määrä rivejä, tai "periattessa" se ei edes ole rivi vaan 1-6 merkkinen numero joka haettu yhdestä isommasta tiedostosta, jossa ne numeroarvot ovat tabulattorilla erotettu ja sieltä olis tarkoitus hakea ja jakaa ne numeroarvot useampiin textboxseihin.
Miten sitä kursorin paikaa saa liikuteltua pystysuunnassa textiboxsissa.
Tämä siirtää aina rivin alkuun:
' moduuliin menossa 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 Private Const EM_GETLINECOUNT = &HBA Public Sub SetCaretVertical(ByRef Text As TextBox, ByVal LineNum As Integer) Dim lngLines As Long, lngPos As Long, lngLine As Long, lngTemp As Long Dim strTemp As String lngLines = SendMessage(Text.hWnd, EM_GETLINECOUNT, 0&, ByVal 0&) If LineNum < 0 Then LineNum = 0 If LineNum > lngLines Then LineNum = lngLines strTemp = Text.Text Do Until lngLine = LineNum lngTemp = InStr(lngPos + 2, strTemp, vbCrLf, vbBinaryCompare) If lngTemp > -1 Then lngPos = lngTemp lngLine = lngLine + 1 Else Exit Do End If Loop Text.SelStart = lngPos End Sub
Skrollin arvon koodia en enää muista, siitä on jo ties kuinka kauan aikaa kun sitä kokeilin. Tätä kuitenkin voi kutsua tyyliin SetCaretVertical Text1, Rivinumero
Vaihtoehtoista ratkaisua voi toki miettiä, julkaisin juuri UniListBoxin: http://www.vbforums.com/showthread.php?t=369540
Siinä ei ole toki mahdollisuutta muokata, mutta sen koodaaminen kyllä onnistuu tuohon.
Aihe on jo aika vanha, joten et voi enää vastata siihen.