OVH Cloud OVH Cloud

richtextbox

2 réponses
Avatar
mimi
bonjour,
J'ai du texte dans mon RTB. Lorsque je suis en =E9xecution,=20
je voudrais pouvoir r=E9cup=E9rer le mot sur lequel=20
l'utilisateur clic. (Pour pouvoir faire un lien.)
merci
mimi

2 réponses

Avatar
François Picalausa
Bonjour/soir,

Tu peux utiliser le message EM_FINDWORDBREAK.
Exemple utilisant un richtextbox (richtextbox1) et un label (label1):

Private Const WM_USER = &H400&
Private Const EM_FINDWORDBREAK = (WM_USER + 76)

' /* new word break function actions */
Private Const WB_CLASSIFY = 3
Private Const WB_MOVEWORDLEFT = 4
Private Const WB_MOVEWORDRIGHT = 5
Private Const WB_LEFTBREAK = 6
Private Const WB_RIGHTBREAK = 7

' /* Far East specific flags */
Private Const WB_MOVEWORDPREV = 4
Private Const WB_MOVEWORDNEXT = 5
Private Const WB_PREVBREAK = 6
Private Const WB_NEXTBREAK = 7

Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any _
) _
As Long

Private Sub RichTextBox1_SelChange()
Dim WordStart As Long, WordEnd As Long
WordStart = SendMessage(RichTextBox1.hwnd, EM_FINDWORDBREAK,
WB_MOVEWORDLEFT, ByVal RichTextBox1.SelStart)
WordEnd = SendMessage(RichTextBox1.hwnd, EM_FINDWORDBREAK,
WB_RIGHTBREAK, ByVal RichTextBox1.SelStart)

WordStart = WordStart + 1
Label1.Caption = Mid$(RichTextBox1.Text, WordStart, WordEnd - WordStart
+ 1)
End Sub

Par contre, pour le support de liens hypertexte, l'utilisation d'un
webbrowser control est peut-être plus appropriée?

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"mimi" a écrit dans le message de
news:09ba01c3d6a1$275d23c0$
bonjour,
J'ai du texte dans mon RTB. Lorsque je suis en éxecution,
je voudrais pouvoir récupérer le mot sur lequel
l'utilisateur clic. (Pour pouvoir faire un lien.)
merci
mimi


Avatar
mimi
merci pour ton aide ça marche impec!

-----Message d'origine-----
Bonjour/soir,

Tu peux utiliser le message EM_FINDWORDBREAK.
Exemple utilisant un richtextbox (richtextbox1) et un


label (label1):

Private Const WM_USER = &H400&
Private Const EM_FINDWORDBREAK = (WM_USER + 76)

' /* new word break function actions */
Private Const WB_CLASSIFY = 3
Private Const WB_MOVEWORDLEFT = 4
Private Const WB_MOVEWORDRIGHT = 5
Private Const WB_LEFTBREAK = 6
Private Const WB_RIGHTBREAK = 7

' /* Far East specific flags */
Private Const WB_MOVEWORDPREV = 4
Private Const WB_MOVEWORDNEXT = 5
Private Const WB_PREVBREAK = 6
Private Const WB_NEXTBREAK = 7

Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any _
) _
As Long

Private Sub RichTextBox1_SelChange()
Dim WordStart As Long, WordEnd As Long
WordStart = SendMessage(RichTextBox1.hwnd,


EM_FINDWORDBREAK,
WB_MOVEWORDLEFT, ByVal RichTextBox1.SelStart)
WordEnd = SendMessage(RichTextBox1.hwnd,


EM_FINDWORDBREAK,
WB_RIGHTBREAK, ByVal RichTextBox1.SelStart)

WordStart = WordStart + 1
Label1.Caption = Mid$(RichTextBox1.Text, WordStart,


WordEnd - WordStart
+ 1)
End Sub

Par contre, pour le support de liens hypertexte,


l'utilisation d'un
webbrowser control est peut-être plus appropriée?

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"mimi" a écrit dans


le message de
news:09ba01c3d6a1$275d23c0$
bonjour,
J'ai du texte dans mon RTB. Lorsque je suis en




éxecution,
je voudrais pouvoir récupérer le mot sur lequel
l'utilisateur clic. (Pour pouvoir faire un lien.)
merci
mimi




.