pour ceux qui trouvent que le code présenté ici est trop lent....
Private Const EM_LINEFROMCHAR As Long = &HC9
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Sub Text1_Click()
Dim nLine As Long
nLine = 1 + SendMessage(Text1.hwnd, EM_LINEFROMCHAR, Text1.SelStart, ByVal 0&)
Label1.Caption = "Ligne N°" & nLine
End Sub
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Text1_Click
End Sub
Pour compter les lignes d'un contrôle txt avec ScrollBars = 2-Vertical :
'Compter les lignes d'un controle
Public 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 Const EM_GETLINECOUNT = &HBA
Salut, quelqu'un aurait la combine pour faire la même chose, mais avec ScrollBars = 2 - Vertical. Dans ces conditions les mises à la ligne automatiques ne sont pas comptées...
Heu ya pas plus rapide ??? car 10 Minute pour calculer 1 Ligne ...
Encore une methode comme celle là en delphi çà prend 10 fois moin de temps, mais bon compilateur de très haut niveau oblige il faudrai trouvé une autre methode !!!
Essaye en ajoutant un label (Label2) et remplace les deux dernière lignes de Private Sub Text1_Click() pas les ligne suivantes :
For x = Text1.SelStart To 1 Step -1
' Détecte la fin de la ligne précédente
If Mid(Text1.Text, x, 1) = Chr(10) Then
NColonne = Text1.SelStart - x + 1
GoTo Suite
End If
Next
' Donne la position du curseur si il est sur la première ligne
' (pas de ligne précédente donc pas de caractère chr(10))
NColonne = Text1.SelStart + 1
Suite:
'*******************************
' Affiche le numéro de la ligne
'*******************************
Label1.Caption = "Ligne N°" + Str(NLigne) + " / Colonne N°" + Str(NColonne)
If Text1.SelStart > 0 Then
' Récupère le caractère avant le curseur
caractere = Mid(Text1.Text, Text1.SelStart, 1)
' Affiche le numéro de la ligne, le caractère et son code ASCII
Label2.Caption = caractere + " / " + Str(Asc(caractere))
End If
Super trop bien ton truc, moi je voudrais aussi récupérer la position du curseur (le numéro du caracétère qui est écrit) et aussi les coordonnées (top et left) tu sais comment on fait ???
Private Const EM_LINEFROMCHAR As Long = &HC9
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Sub Text1_Click()
Dim nLine As Long
nLine = 1 + SendMessage(Text1.hwnd, EM_LINEFROMCHAR, Text1.SelStart, ByVal 0&)
Label1.Caption = "Ligne N°" & nLine
End Sub
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Text1_Click
End Sub
MsgBox SendMessage(Form1.Text1.hWnd, EM_GETLINECOUNT, 0, Byval 0)
ravi de voir que tu a cherché un peu par toi même.
Pour compter les lignes d'un contrôle txt avec ScrollBars = 2-Vertical :
'Compter les lignes d'un controle
Public 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 Const EM_GETLINECOUNT = &HBA
MsgBox SendMessage(Form1.Text1.hWnd, EM_GETLINECOUNT, 0, 0)
Merci !!!!!!