J'ai un programme dans lequel j'ai inséré une richtextbox.
Arrivé à la fin d'un ligne, comme je n'ai pas mis de barre horizontale, le
mot revient à la ligne, et c'est ce que je veux.
En revanche si un mot n'est pas fini il est mis entièrement à la ligne. Je
voudrai modifier le word wrap pour que le mot se coupe automatiquement et
que uniquement l'autre moitié revienne à la ligne.
Peut être me suis-je mal expliqué. Je veux en fait obtenir ceci:
ceci est du te| xte et je trou| ve...
et non:
ceci est du | texte et je | trouve...
Le caractère | symbolise le bord de page
Jean-Marc
"Cédric" a écrit dans le message de news:40769d55$0$20173$
Peut être me suis-je mal expliqué. Je veux en fait obtenir ceci:
ceci est du te| xte et je trou| ve...
et non:
ceci est du | texte et je | trouve...
Hello,
qu'est ce qui me dit que je dois faire ceci est du te| xte et je trou| ve...
et pas:
ceci est du tex| te et je trouv| e...
? Tu veux wrapper à un nombre de caractères précis? auquel cas c'est trivial, il suffit de découper ta string en petites strings? Si tu veux wrapper sur le "bord" du contrôle, c'est à peu prés impossible à faire simplement, sauf si tu utilises une police à empattement fixe (comme Courrier) et si en plus la taille de ton contrôle est fixée une fois pour toute. Dans cette hyppothèse (qui se ramène au premier cas), il te suffit de compter combien de caractères tiennent sur une ligne jusqu'au "bord", et de couper ta string en petites strings.
Jean-Marc
"Cédric" <cedrik702@_inv_alid_hotmail.com> a écrit dans le message de
news:40769d55$0$20173$636a15ce@news.free.fr...
Peut être me suis-je mal expliqué.
Je veux en fait obtenir ceci:
ceci est du te|
xte et je trou|
ve...
et non:
ceci est du |
texte et je |
trouve...
Hello,
qu'est ce qui me dit que je dois faire
ceci est du te|
xte et je trou|
ve...
et pas:
ceci est du tex|
te et je trouv|
e...
?
Tu veux wrapper à un nombre de caractères précis? auquel cas c'est trivial,
il suffit de découper
ta string en petites strings?
Si tu veux wrapper sur le "bord" du contrôle, c'est à peu prés impossible à
faire simplement, sauf si tu
utilises une police à empattement fixe (comme Courrier) et si en plus la
taille de ton contrôle est fixée
une fois pour toute.
Dans cette hyppothèse (qui se ramène au premier cas), il te suffit de
compter combien de caractères
tiennent sur une ligne jusqu'au "bord", et de couper ta string en petites
strings.
"Cédric" a écrit dans le message de news:40769d55$0$20173$
Peut être me suis-je mal expliqué. Je veux en fait obtenir ceci:
ceci est du te| xte et je trou| ve...
et non:
ceci est du | texte et je | trouve...
Hello,
qu'est ce qui me dit que je dois faire ceci est du te| xte et je trou| ve...
et pas:
ceci est du tex| te et je trouv| e...
? Tu veux wrapper à un nombre de caractères précis? auquel cas c'est trivial, il suffit de découper ta string en petites strings? Si tu veux wrapper sur le "bord" du contrôle, c'est à peu prés impossible à faire simplement, sauf si tu utilises une police à empattement fixe (comme Courrier) et si en plus la taille de ton contrôle est fixée une fois pour toute. Dans cette hyppothèse (qui se ramène au premier cas), il te suffit de compter combien de caractères tiennent sur une ligne jusqu'au "bord", et de couper ta string en petites strings.
Jean-Marc
Cédric
> Si tu veux wrapper sur le "bord" du contrôle, c'est à peu prés impossible
à
faire simplement, sauf si tu utilises une police à empattement fixe (comme Courrier) et si en plus la taille de ton contrôle est fixée une fois pour toute.
Les deux conditions sont remplies ;-)
Dans cette hypothèse (qui se ramène au premier cas), il te suffit de compter combien de caractères tiennent sur une ligne jusqu'au "bord", et de couper ta string en petites strings.
Comment faire pour avoir un retour a la ligne après 40 caractères écrits dans la richtextbox ?
> Si tu veux wrapper sur le "bord" du contrôle, c'est à peu prés impossible
à
faire simplement, sauf si tu
utilises une police à empattement fixe (comme Courrier) et si en plus la
taille de ton contrôle est fixée une fois pour toute.
Les deux conditions sont remplies ;-)
Dans cette hypothèse (qui se ramène au premier cas), il te suffit de
compter combien de caractères
tiennent sur une ligne jusqu'au "bord", et de couper ta string en petites
strings.
Comment faire pour avoir un retour a la ligne après 40 caractères écrits
dans la richtextbox ?
> Si tu veux wrapper sur le "bord" du contrôle, c'est à peu prés impossible
à
faire simplement, sauf si tu utilises une police à empattement fixe (comme Courrier) et si en plus la taille de ton contrôle est fixée une fois pour toute.
Les deux conditions sont remplies ;-)
Dans cette hypothèse (qui se ramène au premier cas), il te suffit de compter combien de caractères tiennent sur une ligne jusqu'au "bord", et de couper ta string en petites strings.
Comment faire pour avoir un retour a la ligne après 40 caractères écrits dans la richtextbox ?
ng
Salut,
Regarde du coté de RightMargin. Sinon pour le retour au milieu d'un mot, c'est loin d'être évident dans la mesure où il faudrait que l'algo puisse reconnaitre une syllable ou une double voyelle etc...
Si tu veux wrapper sur le "bord" du contrôle, c'est à peu prés impossible à faire simplement, sauf si tu utilises une police à empattement fixe (comme Courrier) et si en plus la taille de ton contrôle est fixée une fois pour toute.
Les deux conditions sont remplies ;-)
Dans cette hypothèse (qui se ramène au premier cas), il te suffit de compter combien de caractères tiennent sur une ligne jusqu'au "bord", et de couper ta string en petites strings.
Comment faire pour avoir un retour a la ligne après 40 caractères écrits dans la richtextbox ?
Salut,
Regarde du coté de RightMargin. Sinon pour le retour au milieu d'un mot,
c'est loin d'être évident dans la mesure où il faudrait que l'algo puisse
reconnaitre une syllable ou une double voyelle etc...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Cédric <cedrik702@_inv_alid_hotmail.com> a écrit :
Si tu veux wrapper sur le "bord" du contrôle, c'est à peu prés
impossible à faire simplement, sauf si tu
utilises une police à empattement fixe (comme Courrier) et si en
plus la taille de ton contrôle est fixée une fois pour toute.
Les deux conditions sont remplies ;-)
Dans cette hypothèse (qui se ramène au premier cas), il te suffit de
compter combien de caractères
tiennent sur une ligne jusqu'au "bord", et de couper ta string en
petites strings.
Comment faire pour avoir un retour a la ligne après 40 caractères
écrits dans la richtextbox ?
Regarde du coté de RightMargin. Sinon pour le retour au milieu d'un mot, c'est loin d'être évident dans la mesure où il faudrait que l'algo puisse reconnaitre une syllable ou une double voyelle etc...
Si tu veux wrapper sur le "bord" du contrôle, c'est à peu prés impossible à faire simplement, sauf si tu utilises une police à empattement fixe (comme Courrier) et si en plus la taille de ton contrôle est fixée une fois pour toute.
Les deux conditions sont remplies ;-)
Dans cette hypothèse (qui se ramène au premier cas), il te suffit de compter combien de caractères tiennent sur une ligne jusqu'au "bord", et de couper ta string en petites strings.
Comment faire pour avoir un retour a la ligne après 40 caractères écrits dans la richtextbox ?
Cédric
> Regarde du coté de RightMargin. Sinon pour le retour au milieu d'un mot, c'est loin d'être évident dans la mesure où il faudrait que l'algo puisse reconnaitre une syllable ou une double voyelle etc...
Merci je vais regarder. Je n'ai pas besoin de couper selon les règles habituelles, je veux juste un coupage systématique (ça peut paraître bizarre, mais c'est un programme très spécifique). Ainsi le découpage suivant ne pose aucun probleme par exemple :
...m| aison
ou alors
...antic| onstitu...
> Regarde du coté de RightMargin. Sinon pour le retour au milieu d'un mot,
c'est loin d'être évident dans la mesure où il faudrait que l'algo puisse
reconnaitre une syllable ou une double voyelle etc...
Merci je vais regarder. Je n'ai pas besoin de couper selon les règles
habituelles, je veux juste un coupage systématique (ça peut paraître
bizarre, mais c'est un programme très spécifique). Ainsi le découpage
suivant ne pose aucun probleme par exemple :
> Regarde du coté de RightMargin. Sinon pour le retour au milieu d'un mot, c'est loin d'être évident dans la mesure où il faudrait que l'algo puisse reconnaitre une syllable ou une double voyelle etc...
Merci je vais regarder. Je n'ai pas besoin de couper selon les règles habituelles, je veux juste un coupage systématique (ça peut paraître bizarre, mais c'est un programme très spécifique). Ainsi le découpage suivant ne pose aucun probleme par exemple :
...m| aison
ou alors
...antic| onstitu...
Cédric
Non j'ai essayé, malheureusement; rightmargin ne fonctionne pas, le mot est mis a la ligne en entier
Non j'ai essayé, malheureusement; rightmargin ne fonctionne pas, le mot est
mis a la ligne en entier
Non j'ai essayé, malheureusement; rightmargin ne fonctionne pas, le mot est mis a la ligne en entier
François Picalausa
Bonjour/soir,
essaye ceci: 'Dans une form avec un richtextbox richtext1
Private Const WM_USER As Long = &H400 Private Const EM_SETWORDBREAKPROCEX As Long = WM_USER + 81
Private Declare Function SendMessage _ Lib "user32" _ Alias "SendMessageA" _ ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long _ ) _ As Long
Private Sub Form_Load() SendMessage RichTextBox1.hwnd, EM_SETWORDBREAKPROCEX, 0, AddressOf EditWordBreakProcEx End Sub 'Dans un module standard:
Function EditWordBreakProcEx( _ ByVal pchText As Long, _ ByVal cchText As Long, _ ByVal bCharSet As Byte, _ ByVal code As Long _ ) _ As Long
"Cédric" a écrit dans le message de news:407702df$0$22880$
Non j'ai essayé, malheureusement; rightmargin ne fonctionne pas, le mot est mis a la ligne en entier
Bonjour/soir,
essaye ceci:
'Dans une form avec un richtextbox richtext1
Private Const WM_USER As Long = &H400
Private Const EM_SETWORDBREAKPROCEX As Long = WM_USER + 81
Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long _
) _
As Long
Private Sub Form_Load()
SendMessage RichTextBox1.hwnd, EM_SETWORDBREAKPROCEX, 0, AddressOf
EditWordBreakProcEx
End Sub
'Dans un module standard:
Function EditWordBreakProcEx( _
ByVal pchText As Long, _
ByVal cchText As Long, _
ByVal bCharSet As Byte, _
ByVal code As Long _
) _
As Long
EditWordBreakProcEx = 0 'coupez!
End Function
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Cédric" <cedrik702@_inv_alid_hotmail.com> a écrit dans le message de
news:407702df$0$22880$626a14ce@news.free.fr
Non j'ai essayé, malheureusement; rightmargin ne fonctionne pas, le
mot est mis a la ligne en entier
essaye ceci: 'Dans une form avec un richtextbox richtext1
Private Const WM_USER As Long = &H400 Private Const EM_SETWORDBREAKPROCEX As Long = WM_USER + 81
Private Declare Function SendMessage _ Lib "user32" _ Alias "SendMessageA" _ ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long _ ) _ As Long
Private Sub Form_Load() SendMessage RichTextBox1.hwnd, EM_SETWORDBREAKPROCEX, 0, AddressOf EditWordBreakProcEx End Sub 'Dans un module standard:
Function EditWordBreakProcEx( _ ByVal pchText As Long, _ ByVal cchText As Long, _ ByVal bCharSet As Byte, _ ByVal code As Long _ ) _ As Long
'attention aux scrollbars, test réalisé sans 'il faudra faire des ajustement en conséquence 'de plus si le textbox à une taille fixe, cette 'valeur pourra être fixée définitivement, elle 'représente le nombre de caractère sur une ligne 'lNbLargeurChar = 51 lNbLargeurChar = Text1.Width / Me.TextWidth(" ") - 1
For i = 1 To Len(sText) Step lNbLargeurChar - 1 If i + lNbLargeurChar - 1 >= Len(sText) Then sOut = sOut & Mid$(sText, i, lNbLargeurChar - 1) Else sOut = sOut & Mid$(sText, i, lNbLargeurChar - 1) & "-" & vbCrLf End If Next
'attention aux scrollbars, test réalisé sans
'il faudra faire des ajustement en conséquence
'de plus si le textbox à une taille fixe, cette
'valeur pourra être fixée définitivement, elle
'représente le nombre de caractère sur une ligne
'lNbLargeurChar = 51
lNbLargeurChar = Text1.Width / Me.TextWidth(" ") - 1
For i = 1 To Len(sText) Step lNbLargeurChar - 1
If i + lNbLargeurChar - 1 >= Len(sText) Then
sOut = sOut & Mid$(sText, i, lNbLargeurChar - 1)
Else
sOut = sOut & Mid$(sText, i, lNbLargeurChar - 1) & "-" & vbCrLf
End If
Next
Text1.Text = sOut
'Text1.SelStart = lPos
sOut = "": sText = ""
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Cédric <cedrik702@_inv_alid_hotmail.com> a écrit :
Non j'ai essayé, malheureusement; rightmargin ne fonctionne pas, le
mot est mis a la ligne en entier
'attention aux scrollbars, test réalisé sans 'il faudra faire des ajustement en conséquence 'de plus si le textbox à une taille fixe, cette 'valeur pourra être fixée définitivement, elle 'représente le nombre de caractère sur une ligne 'lNbLargeurChar = 51 lNbLargeurChar = Text1.Width / Me.TextWidth(" ") - 1
For i = 1 To Len(sText) Step lNbLargeurChar - 1 If i + lNbLargeurChar - 1 >= Len(sText) Then sOut = sOut & Mid$(sText, i, lNbLargeurChar - 1) Else sOut = sOut & Mid$(sText, i, lNbLargeurChar - 1) & "-" & vbCrLf End If Next
essaye ceci: 'Dans une form avec un richtextbox richtext1
Private Const WM_USER As Long = &H400 Private Const EM_SETWORDBREAKPROCEX As Long = WM_USER + 81
Private Declare Function SendMessage _ Lib "user32" _ Alias "SendMessageA" _ ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long _ ) _ As Long
Private Sub Form_Load() SendMessage RichTextBox1.hwnd, EM_SETWORDBREAKPROCEX, 0, AddressOf EditWordBreakProcEx End Sub 'Dans un module standard:
Function EditWordBreakProcEx( _ ByVal pchText As Long, _ ByVal cchText As Long, _ ByVal bCharSet As Byte, _ ByVal code As Long _ ) _ As Long
EditWordBreakProcEx = 0 'coupez!
End Function
"Cédric" a écrit dans le message de news:407702df$0$22880$
Non j'ai essayé, malheureusement; rightmargin ne fonctionne pas, le mot est mis a la ligne en entier
Impressionant :)
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
François Picalausa <fpicalausa@chez.com> a écrit :
Bonjour/soir,
essaye ceci:
'Dans une form avec un richtextbox richtext1
Private Const WM_USER As Long = &H400
Private Const EM_SETWORDBREAKPROCEX As Long = WM_USER + 81
Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long _
) _
As Long
Private Sub Form_Load()
SendMessage RichTextBox1.hwnd, EM_SETWORDBREAKPROCEX, 0, AddressOf
EditWordBreakProcEx
End Sub
'Dans un module standard:
Function EditWordBreakProcEx( _
ByVal pchText As Long, _
ByVal cchText As Long, _
ByVal bCharSet As Byte, _
ByVal code As Long _
) _
As Long
EditWordBreakProcEx = 0 'coupez!
End Function
"Cédric" <cedrik702@_inv_alid_hotmail.com> a écrit dans le message de
news:407702df$0$22880$626a14ce@news.free.fr
Non j'ai essayé, malheureusement; rightmargin ne fonctionne pas, le
mot est mis a la ligne en entier
essaye ceci: 'Dans une form avec un richtextbox richtext1
Private Const WM_USER As Long = &H400 Private Const EM_SETWORDBREAKPROCEX As Long = WM_USER + 81
Private Declare Function SendMessage _ Lib "user32" _ Alias "SendMessageA" _ ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long _ ) _ As Long
Private Sub Form_Load() SendMessage RichTextBox1.hwnd, EM_SETWORDBREAKPROCEX, 0, AddressOf EditWordBreakProcEx End Sub 'Dans un module standard:
Function EditWordBreakProcEx( _ ByVal pchText As Long, _ ByVal cchText As Long, _ ByVal bCharSet As Byte, _ ByVal code As Long _ ) _ As Long
EditWordBreakProcEx = 0 'coupez!
End Function
"Cédric" a écrit dans le message de news:407702df$0$22880$
Non j'ai essayé, malheureusement; rightmargin ne fonctionne pas, le mot est mis a la ligne en entier