Hejsan allihop Hej Jag har ungefär samma problem. Jag skulle vilja vet hur man gör för att i en richtextbox få reda på vilken rad markören står på (låt säga att aktuellt radnummer skall dyka upp i "textbox1"), och man ska även kunna, i en t.ex. textbox2 skriva in ett radnummer och sedan hoppar markören dit. För att ta reda på aktuell rad så kan du ju använda 'GetLineFromChar'. Tack. Det funkar jättebra. Hej Igen SvenPon har rätt. Löser det enklast med EM_LINEINDEX. Har kapslat anropet til deta i GetLine. Vilket kan läggas i en modul. Eller i formuläret: Option Explicit Hittade en alternativ lösning: Tack SvenPon, Andreas och Cat!!! Jag ÄLSKAR er :-) Måste också tacka er alla som svarat... I om med att Code Red dykt upp på jobbet har de stängt av port 80 och därför inte kunnat delta i diskutionen. Och i hemmet hade jag inte mitt inloggningsid förens nu. Ska sätta mig och testa detta under helgen..Textbox - Tot antal rader/aktiv rad
Hur gör jag för att ta ut totala antalet rader ur en textbox som har multiline och hur gör jag för att ta ut specifika rader ut en textbox tex rad 1, rad 3, rad 7 och 8?
Hoppas någon har en lösning,
Tack för hjälpen i förhand.
/MarcusSv: Textbox - Tot antal rader/aktiv rad
Tycker att du skall överväga att byta ut din TextBox
mot en ListBox.Den funkar och ser ut som en TextBox.
Plus att du enkelt kan "dribbla" med rader osv.
Läs in din textmassa med tex Line Input från textfil till din ListBox
Annars blir det API SendMessage som löser ditt problem.
mvh
SvenSv: Textbox - Tot antal rader/aktiv rad
Jag har tyvärr ingen möjligthet att byta till listbox...
MvH Dan "DaPe" PerssonSv: Textbox - Tot antal rader/aktiv rad
Nåt i stil med detta funkar hyfsat..
Label1.Caption = RichTextBox1.GetLineFromChar(RichTextBox1.SelStart())
/OlaSv: Textbox - Tot antal rader/aktiv rad
Någon som har nån idé på lösningen till hur man flyttar markören till en specifik rad?
MvH Dan "DaPe" PerssonSv: Textbox - Tot antal rader/aktiv rad
Måste gå via API SendMessage och en av alla dess
EM_ ....... konstanter tex
Private Const EM_FINDTEXT = (WM_USER + 56)
WM_USER = 1024 osv osv.
Har inte koll på vilken det skulle kunna vara
Finns det någon API Guru out there som kan svaret ??
undrar
Sven och förmodlgen DaPeSv: Textbox - Tot antal rader/aktiv rad
Tror att lösningen finns i SendMessage och
konstant Const EM_LINEINDEX = &HBB
Funderar vidare
DSSv: Textbox - Tot antal rader/aktiv rad
Option Explicit
Private Const EM_LINEINDEX = &HBB
Private Const EM_LINELENGTH = &HC1
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
Public Function GetLine(TextBox As TextBox, Line As Long) As String
Dim LineIndex As Long
Dim LineLength As Long
If Line > 0 Then
LineIndex = SendMessage(TextBox.hwnd, EM_LINEINDEX, Line - 1, ByVal 0&)
If LineIndex <> -1 Then
LineLength = SendMessage(TextBox.hwnd, EM_LINELENGTH, Line - 1, ByVal 0&)
If LineLength > 0 Then
GetLine = Mid$(TextBox.Text, LineIndex + 1, LineLength)
End If
End If
End If
End Function
Private Sub Form_Load()
Text1.Text = "Rad 1" & vbCrLf & _
"Rad 2" & vbCrLf & _
"Rad 3" & vbCrLf & _
"Rad 4" & vbCrLf & _
"Rad 5" & vbCrLf & _
"Rad 6" & vbCrLf & _
"Rad 7" & vbCrLf & _
"Rad 8" & vbCrLf & _
"Rad 9" & vbCrLf & _
"Rad 10"
Debug.Print "1: " & GetLine(Text1, 1)
Debug.Print "3: " & GetLine(Text1, 3)
Debug.Print "7: " & GetLine(Text1, 7)
Debug.Print "8: " & GetLine(Text1, 8)
End SubSv: Textbox - Tot antal rader/aktiv rad
Private Const EM_LINEINDEX = &HBB
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 Sub Text1_Validate(Cancel As Boolean)
Dim Line As Long
Dim LineIndex As Long
If Len(Text1) Then
If IsNumeric(Text1) Then
Line = CDbl(Text1)
LineIndex = SendMessage(RichTextBox1.hwnd, EM_LINEINDEX, Line - 1, ByVal 0&)
If LineIndex <> -1 Then
RichTextBox1.SelStart = LineIndex
Else
MsgBox "Line Dose Not Exist"
End If
Else
MsgBox "You must enter a number"
Cancel = True
End If
End If
End SubSv: Textbox - Tot antal rader/aktiv rad
Option Explicit
Private Const EM_LINELENGTH = &HC1
Private Const EM_GETLINE = &HC4
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
Public Function GetLine(TextBox As TextBox, Line As Long) As String
Dim LineLength As Long
Dim Data() As Byte
LineLength = SendMessage(TextBox.hwnd, EM_LINELENGTH, Line - 1, ByVal 0&)
If LineLength Then
ReDim Data(1 To LineLength + 2)
Data(1) = LineLength And 255
Data(2) = LineLength \ 256
Debug.Print SendMessage(TextBox.hwnd, EM_GETLINE, Line - 1, Data(1))
GetLine = Left(StrConv(Data, vbUnicode), LineLength)
End If
End Function
Private Sub Form_Load()
Text1 = "Rad 1" & vbCrLf & "Rad 2" & vbCrLf & "Rad3"
MsgBox GetLine(Text1, 2)
End SubSv: Textbox - Tot antal rader/aktiv rad
Ska nu bara testa om det funkar, men det borde det ju göra när det är ni som har skrivit koden ;-)
MvH Dan "DaPe" PerssonSv: Textbox - Tot antal rader/aktiv rad
Tack en en gång..