Come ricavare il numero di linee contenute in una TextBox

Questo metodo è lineare: usa SendMessage per ricavare il numero di linee in una TextBox. In questo metodo una linea è definita come nuova linea dopo un word-wrap; è indipendente dal numero di ritorni a capo nel testo.

Inserire la funzione API seguente nell'area generale delle dichiarazioni di un modulo bas:

Option Explicit

Public Declare Function SendMessageLong Lib _
"user32" Alias "SendMessageA" _
(ByVal hwnd As Long, _ 
ByVal wMsg As Long, _ 
ByVal wParam As Long, _
ByVal lParam As Long) As Long

Public Const EM_GETLINECOUNT = &HBA 

Codice da inserire in un Form:

Sub Text1_Change()
Dim lineCount as Long
On Local Error Resume Next

'riceve e mostra il numero di linee contenute nel controllo TextBox
lineCount = SendMessageLong(Text1.hwnd, EM_GETLINECOUNT, 0&, 0&)
Label1 = Format$(lineCount, "##,###")
End Sub 

La TextBox passata all'API SendMessage deve avere la proprietà multiline settata su True a design time.
EM_GETLINECOUNT non fa passare parametri addizionali all'API nella variabili wParam e lParam.
Queste devono essere 0.

Testato su: Windows 98, Windows Me, Windows 2000 Professional