Comment connaitre la première ligne visible dans une richtextbox

pazgal
Messages postés
12
Date d'inscription
samedi 30 avril 2005
Statut
Membre
Dernière intervention
11 mai 2006
- 28 mai 2005 à 21:26
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
- 30 mai 2005 à 09:42
Bonsoir à tous,



Je cherche à faire un éditeur PHP. J'aimerais bien numéroter les lignes
de ma richtextbox mais mon problème est que je ne sais pas quelle est
la première ligne visible (lorsque l'on scroll)



Merci d'avance pour votre précieuse aide.

Pazgal

5 réponses

cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
29 mai 2005 à 02:08
Salut
J'ai été confronté à cette question récemment pour retrouver le texte sous la souris.
Je te l'ai aménagé pour répondre à ta question :

-1- Supposons que le RichTextBox s'appelle rtfText
-2- Dans la partie déclaration de ton code :
Option Explicit
Private Type PointApi
x As Long
y As Long
End Type
Private Const EM_CHARFROMPOS As Long = &HD7
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
ByVal hWnd As Long, _
ByVal msg As Long, _
ByVal wp As Long, _
lp As Any) As Long

-3- Dans le code d'un bouton (par exemple) :
Private Sub Command1_Click()


' On va chercher le texte qui se trouve en haut à gauche d'un RTB
Dim Caract As PointApi, PosCar As Long

' Toutes ces coordonnées qui suivent sont en pixel, pas en twips
On Error Resume Next

' Coordonnées du caractère du coin haut gauche (à la louche)
Caract.x = 2 ' pixel
Caract.y = 2 ' pixel

' Recherche le caractère qui correspond
PosCar = SendMessage(rtfText.hWnd, EM_CHARFROMPOS, ByVal 0, ByVal Caract)
If PosCar = 0 Then Exit Sub
Debug.Print "10 caractères trouvés >" & Mid(rtfText.Text, PosCar + 1, 10) & "<"
End Sub

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
pazgal
Messages postés
12
Date d'inscription
samedi 30 avril 2005
Statut
Membre
Dernière intervention
11 mai 2006

29 mai 2005 à 11:15
J'ai recopié le code que tu m'as fourni mais il fait une erreur sur
l'appel à la fonction SendMessage, plus précisement il me surligne :
"ByVal Caract" -> "Type incompatible"



N'y a t'il pas plus simple pour n'obtenir que le numéro de la première ligne visible ?

Merci.
0
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
29 mai 2005 à 19:41
Désolé, si tu as bien utilisé la déclaration de SendMessage, il ne doit pas y avoir de problème !

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
30 mai 2005 à 09:41
Tu peux tout simplement utiliser le message EM_GETFIRSTVISIBLELINE

Private Const EM_GETFIRSTVISIBLELINE As Long = &HCE

FirstLineNumber = SendMessage ( RTF1.hWnd , EM_GETFIRSTVISIBLELINE , 0 , Byval 0& )

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
30 mai 2005 à 09:42
(valable également pour un TextBox)

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
0