Hejsan. Är det det här du söker? Andreas kod är helt ok , men vill du ha detta i realtid kan det inte ligga i Form_Load Hej igen och tack för svaren. Såg vad som var felet. Hade glömt lägga till denna: Hej igen. mmm... Tål att fundera på.Det är ju skalningen och horizontal scroll som ställer till det. Så här blir mitt förslag till lösning. Skippa Label:nAntal rader i textbox
Jag använder denna koden för att ta fram antalet rader i en textbox:
Private Sub Form_Load()
Dim lngCount As Long
lngCount = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0&, 0&)
Label1.Caption = lngCount
End Sub
Just nu skriver den bara ut antalet rader i en label, men jag vill att den på något sätt ska loopa igenom fram till det antalet. så att istället för att det står "2" ska det stå:
1
2
Hoppas ni förstår. Detta vill jag också ska hända i realtid, dvs ifall man skriver en ny rad ska denna raden också räknas med utan att något knapptrycks ska behövas.
Någon som vet hur jag kan lösa det här?
Tack på förhand!
MVH Niclas ÅbergSv: Antal rader i textbox
Private Sub Form_Load()
Dim lngCount As Long
Dim i As Long
Dim text As STRING
lngCount = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0&, 0&)
For i = 1 to lngCount
text = text & i & vbCrLf
Next
Label1.Caption = text
End Sub
Sv:Antal rader i textbox
Mitt förslag är att du tillverkar en Private Sub CountLine()
<code>
Private Sub Form_Activate() ' Obs Activate
Call CountLine
End Sub
Private Sub CountLine()
Dim lngCount As Long
Dim i As Long
Dim sLine As String
lngCount = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0&, 0&)
For i = 1 to lngCount
sLine = sLine & Str$(i) & vbCrLf
Next
Label1.Caption = sLine
End Sub
</code>
Sen får du kalla på CountLine varje gång du lägger till en ny rad i Text1
Anropet till CountLine gör du väl bäst enl. din förra tråd på raden under "Infogad text"
Call CountLineSv: Antal rader i textbox
Testade Sven Åke Perssons kod med fick då detta felmeddelande:
"Sub or Function not defined"
sökte runt lite men fick inte nåt vettigt svar på varför?
Kan tillägga att felet pekar på "SendMessage"
Vad kan jag ha gjort för fel?
MVH Niclas ÅbergSv:Antal rader i textbox
<code>
Option Explicit
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
Const EM_GETLINECOUNT = &HBA
Const EM_GETLINE = &HC4
</code>
såå trött på mig själv :).
Nu fungerar allt strålande! Tack
MVH Niclas ÅbergSv: Antal rader i textbox
Har återigen stött på ett problem. Vill att radnumrerna ska visas bredvid textboxen, men får det inte till att fungera då textenboxen har en scroll och är skalad efter projektet fönstret. Testade att lägga in label1 bredvid textboxen men när jag testar programet så täcker texboxen hela ytan och labeln syns inte.
Jag vill alltså att radnumrerna ska synas bredvid raderna. och följa med om man t.ex scrollar ner eller förstorar fönstret. Ungefär som om textboxen vore uppdelad i två delar, en för radnumrerna och en för texten.
Tack på förhand!
MVH Niclas ÅbergSv:Antal rader i textbox
Skulle du inte kunna tänka dig att radnummret står först i Text1 längst till vänster.
Dvs skippa Label:nSv: Antal rader i textbox
<code>
Option Explicit
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
Const EM_GETLINECOUNT = &HBA
Const EM_GETLINE = &HC4
Private Sub Form_Activate() ' Obs Activate
Call CountLine
End Sub
Private Sub CountLine()
Dim lngCount As Long, i As Long, chrCount As Long
Dim sLine As String, buffer As String, retLines As String
buffer = Space$(256)
lngCount = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0&, 0&)
For i = 0 To lngCount - 2
chrCount = SendMessage(Text1.hwnd, EM_GETLINE, i, ByVal buffer)
retLines = retLines & Str$(i + 1) & " ." & Left$(buffer, chrCount - 1) & vbCrLf
Next
Text1.Text = retLines
End Sub
</code>