NUMÉRO DE LA LIGNE DANS UN TEXTBOX

VicoLaChips2 Messages postés 436 Date d'inscription dimanche 20 janvier 2002 Statut Membre Dernière intervention 2 février 2010 - 19 avril 2002 à 06:48
cs_dabro Messages postés 24 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 25 novembre 2016 - 26 mars 2007 à 14:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/3059-numero-de-la-ligne-dans-un-textbox

cs_dabro Messages postés 24 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 25 novembre 2016
26 mars 2007 à 14:12
Merci Renfield... C'est vrai que quand on sait où chercher çà va mieux...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 mars 2007 à 13:45
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
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 mars 2007 à 13:40
gaffe au Byval :
MsgBox SendMessage(Form1.Text1.hWnd, EM_GETLINECOUNT, 0, Byval 0)

ravi de voir que tu a cherché un peu par toi même.
cs_dabro Messages postés 24 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 25 novembre 2016
26 mars 2007 à 13:36
Bon, ben j'ai la réponse grâce à Renfield :

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 !!!!!!
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 mars 2007 à 11:44
cs_dabro Messages postés 24 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 25 novembre 2016
26 mars 2007 à 09:25
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...
SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 février 2006
12 août 2004 à 14:37
Génial !

10/10
wallon14 Messages postés 56 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 3 juillet 2005
24 juin 2004 à 16:58
plus de 900 affichages et je suis le premier a mettre une note... 10/10 ^^ Bin oui j'suis généreu :oP

Mais vu le nombre de mecs qui ont pompé sans commenter ni noter...
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
19 sept. 2003 à 15:16
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 !!!
OrionLG Messages postés 4 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 24 janvier 2003
19 avril 2002 à 11:14
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

J'espère que j'ai répondu à ta question ;-)
leptidev Messages postés 206 Date d'inscription mercredi 30 janvier 2002 Statut Membre Dernière intervention 4 décembre 2007
19 avril 2002 à 09:34
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 ???
VicoLaChips2 Messages postés 436 Date d'inscription dimanche 20 janvier 2002 Statut Membre Dernière intervention 2 février 2010 2
19 avril 2002 à 06:48
très bien !!

Bonne prog @+
Rejoignez-nous