begin process at 2012 02 11 11:39:55
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > NUMÉRO DE LA LIGNE DANS UN TEXTBOX

NUMÉRO DE LA LIGNE DANS UN TEXTBOX


 Information sur la source

Note :
6 / 10 - par 2 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Texte Niveau :Débutant Date de création :18/04/2002 Date de mise à jour :18/04/2002 22:49:48 Vu :4 710

Auteur : OrionLG

Ecrire un message privé
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Ce code permet de donner le numéro de la ligne où se trouve le curseur dans un textbox.
Placer un textbox (Text1) avec les propriété 'MultiLigne=True", "ScrollBars=3 - Both" et un label (Label1) puis copier le code.

Ce code fonctionne mais il ralentit lorsqu'il y a beaucoup de lignes.  

Source

  • Private Sub Text1_Click()
  • '*******************************************************
  • ' NLigne est à 1 pour la première ligne qui n'est pas
  • ' comptée avec cette méthode
  • '*******************************************************
  • NLigne = 1
  • '*******************************************************
  • ' chr(10) -> saut de ligne
  • ' chr(13) -> caractère de retour chariot
  • ' chr(10)+chr(13) donne un passage à la ligne suivante
  • '*******************************************************
  • For X = 1 To Text1.SelStart + 1 Step 2
  • If Mid(Text1.Text, X, 1) = Chr(13) Or Mid(Text1.Text, X, 1) = Chr(10) Then NLigne = NLigne + 1
  • Next
  • '*******************************************************
  • ' Text1.selstart permet de compter jusque'à la position
  • ' du curseur qui est sur la ligne à numéroter
  • '*******************************************************
  • ' Step 2 permet de tester un caractère sur deux
  • ' ce qui permet d'être un peut plus rapide que
  • ' de tester tous les carctères un à un.
  • '*******************************************************
  • Suite:
  • '*******************************
  • ' Affiche le numéro de la ligne
  • '*******************************
  • Label1.Caption = "Ligne N°" + Str(NLigne)
  • End Sub
  • Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
  • '*****************************************************
  • ' Exécute la fonction qui donne le numéro de la ligne
  • '*****************************************************
  • Text1_Click
  • End Sub
Private Sub Text1_Click()
    '*******************************************************
    ' NLigne est à 1 pour la première ligne qui n'est pas
    ' comptée avec cette méthode
    '*******************************************************
    NLigne = 1
    
    '*******************************************************
    ' chr(10) -> saut de ligne
    ' chr(13) -> caractère de retour chariot
    ' chr(10)+chr(13) donne un passage à la ligne suivante
    '*******************************************************
    For X = 1 To Text1.SelStart + 1 Step 2
        If Mid(Text1.Text, X, 1) = Chr(13) Or Mid(Text1.Text, X, 1) = Chr(10) Then NLigne = NLigne + 1
    Next
    '*******************************************************
    ' Text1.selstart permet de compter jusque'à la position
    ' du curseur qui est sur la ligne à numéroter
    '*******************************************************
    ' Step 2 permet de tester un caractère sur deux
    ' ce qui permet d'être un peut plus rapide que
    ' de tester tous les carctères un à un.
    '*******************************************************

Suite:
    '*******************************
    ' Affiche le numéro de la ligne
    '*******************************
    Label1.Caption = "Ligne N°" + Str(NLigne)
End Sub

Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
    '*****************************************************
    ' Exécute la fonction qui donne le numéro de la ligne
    '*****************************************************
    Text1_Click
End Sub  



 Sources du même auteur

Source avec Zip Source avec une capture PUZZLE
Source avec Zip JEU DE TAQUIN

 Sources de la même categorie

Source avec Zip Source avec une capture MASQUE DE SAISIE NUMÉRIQUE par acive
Source avec Zip Source .NET (Dotnet) COMPTEUR DE NOMBRE DE MOTS DANS UN TEXTE par alpha5
Source avec Zip Source avec une capture HM - BLOCNOTE par hassenmajor
Source .NET (Dotnet) [VB.NET] CLASS DE COLORATION SYNTAXIQUE "ON THE FLY" par huzima
Source avec Zip Source avec une capture PERSONNALISEZ VOS BOÎTES DE MESSAGE (X)HTML par medjahedScript

Commentaires et avis

Commentaire de VicoLaChips2 le 19/04/2002 06:48:24

très bien !!

Bonne prog @+

Commentaire de leptidev le 19/04/2002 09:34: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 ???

Commentaire de OrionLG le 19/04/2002 11:14:15

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 ;-)

Commentaire de elguevel le 19/09/2003 15:16:39

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 !!!

Commentaire de wallon14 le 24/06/2004 16:58:13

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...

Commentaire de SkyRocKo le 12/08/2004 14:37:06

Génial !

10/10

Commentaire de dabro le 26/03/2007 09:25: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...

Commentaire de Renfield le 26/03/2007 11:44:05 administrateur CS

impensable de compter les Chr$(13)

faut utiliser les APIs.
SendMessage et EM_LINEFROMCHAR

voir la doc :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/editcontrols/editcontrolreference/editcontrolmessages/em_linefromchar.asp

Commentaire de dabro le 26/03/2007 13:36:20

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 !!!!!!

Commentaire de Renfield le 26/03/2007 13:40:02 administrateur CS

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.

Commentaire de Renfield le 26/03/2007 13:45:18 administrateur CS

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

Commentaire de dabro le 26/03/2007 14:12:20

Merci Renfield... C'est vrai que quand on sait où chercher çà va mieux...

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales