Majuscule dans un Richtextbox sous .net

Résolu
thyphonfalcon Messages postés 41 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 12 mai 2007 - 19 nov. 2006 à 15:04
thyphonfalcon Messages postés 41 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 12 mai 2007 - 19 nov. 2006 à 21:08
Bonjour,

J'essaye d'avoir une majuscule en début de chaque ligne de texte dans mon richtextbox sour vb2005.
#

Region
" Majuscule en cours de frappe"

Private
Sub Text1_KeyPress(
ByVal eventSender
As System.Object,
ByVal eventArgs
As System.Windows.Forms.KeyPressEventArgs)
Handles RichTextBox1.KeyPress

Dim KeyAscii
AsShort Asc(eventArgs.KeyChar)KeyAscii Maj(KeyAscii, RichTextBox1.Text)

eventArgs.KeyChar = Chr(KeyAscii)

If KeyAscii = 0
TheneventArgs.Handled =

True

End
If

End
Sub

Function Maj(
ByVal KeyAscii
As
Integer,
ByVal TextBoxName
As
String)

Dim Str_Renamed
As
Object

If KeyAscii > 96
And KeyAscii < 123
Then

If Len(TextBoxName) = 0
ThenKeyAscii = KeyAscii - 32

ElseStr_Renamed = Mid(TextBoxName, Len(TextBoxName), 1)

Select
Case Str_Renamed

Case
"." : KeyAscii = KeyAscii - 32

End
Select

End
If

End
If

Maj = KeyAscii

End
Function

#
End
Region

Avec ce code j'arrive à avoir la première lettre de la première ligne mais je n'arrive pas à reproduire le résultat sur les autres lignes ?
une idée quelqu'un ?

Merci

8 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
19 nov. 2006 à 15:37
Pour une majuscule après un saut de ligne :

Private Sub RichTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles RichTextBox1.KeyPressIf RichTextBox1.TextLength 0 OrElse RichTextBox1.Text.Chars(RichTextBox1.TextLength - 1) vbLf Then
e.KeyChar = Char .ToUpper(e.KeyChar)
End If
End Sub

---- Sevyc64  (alias Casy) ----<hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
19 nov. 2006 à 21:05
Dsl, petite correction.

En voulant aller trop vite, on fait des erreurs.

Evidement ce code est très simpliste et necessite que la règle de français soit absolument respectée pour fonctionner. Il ne donne qu'une piste vers la solution finale. Il est perfectionnable au gout de chacun

Private Sub RichTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles RichTextBox1.KeyPress
If RichTextBox1.TextLength = 0 OrElse _
RichTextBox1.Text.Chars(RichTextBox1.TextLength - 1) = vbLf OrElse _
RichTextBox1.TextLength > 1AndAlso ( _
RichTextBox1.Text.Substring(RichTextBox1.TextLength - 2) = ". " OrElse _
RichTextBox1.Text.Substring(RichTextBox1.TextLength - 2) = "! ") Then
'............

e.KeyChar = Char .ToUpper(e.KeyChar)
End If
End Sub

---- Sevyc64  (alias Casy) ----<hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
thyphonfalcon Messages postés 41 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 12 mai 2007
19 nov. 2006 à 15:42
Coooool merci. j'approchais plus ou moins la solution. là c'est nickel
Merci
0
thyphonfalcon Messages postés 41 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 12 mai 2007
19 nov. 2006 à 17:13
Voilà les codes combinés.

Majuscules à chaque ligne et après un point ou un !

Private

Sub Text1_KeyPress(
ByVal eventSender
As System.Object,
ByVal e
As System.Windows.Forms.KeyPressEventArgs)
Handles Text1.KeyPress 

Dim KeyAscii
AsShort Asc(e.KeyChar)KeyAscii FirstsInMaj(KeyAscii, Text1.Text)

e.KeyChar = Chr(KeyAscii)

If Text1.TextLength = 0
OrElse Text1.Text.Chars(Text1.TextLength - 1) = vbLf
Thene.KeyChar =

Char.ToUpper(e.KeyChar)
'Merci à Sevyc64 (alias Casy)www.vbfrance.com ----

End
If

End
Sub

' - La fonction

Function FirstsInMaj(
ByRef KeyAscii
As
Short,
ByRef TextBoxName
As
String)
As
Object

Dim Str_Renamed
As
Object

If KeyAscii > 96
And KeyAscii < 123
Then

If Len(TextBoxName) = 0
ThenKeyAscii = KeyAscii - 32

ElseStr_Renamed = Mid(TextBoxName, Len(TextBoxName), 1)

Select
Case Str_Renamed

Case
".",
"!" : KeyAscii = KeyAscii - 32

End
Select

End
If

End
IfFirstsInMaj = KeyAscii

End
Function
0

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

Posez votre question
cs_Catara Messages postés 4 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 19 novembre 2006
19 nov. 2006 à 19:51
C'est bien sympa tout çà mais le code est écrit pour un textebox et pas un richtexbox...faut dormir thyphon !
Par contre, en le modifiant pour un richtextbox on obtient rien....si ce n'est qu'il écit à l'envers !!!

La fonction de SevyC64 seule nous donne la majuscule à chaque ligne mais alors sevyC64 comment fait t'on pour qu'il mette aussi une majuscule après un point ou un point d'exclamation ? car là je suis paumé et un débutant paumé......

Merci à vous deux.....heu sans rancune Thyphon ;-)
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
19 nov. 2006 à 20:55
Tu rajoute les conditions dans le If

Private Sub RichTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles RichTextBox1.KeyPress
If RichTextBox1.TextLength = 0 OrElse _
RichTextBox1.Text.Chars(RichTextBox1.TextLength - 1) = vbLf OrElse _
RichTextBox1.Text.Substring(RichTextBox1.TextLength - 2) = ". " OrElse _
RichTextBox1.Text.Substring(RichTextBox1.TextLength - 2) = "! "Then
'............

e.KeyChar = Char .ToUpper(e.KeyChar)
End If
End Sub

comparaison des 2 derniers caractères, car en bon français, la ponctuation est suivie d'un espace.

---- Sevyc64  (alias Casy) ----<hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_Catara Messages postés 4 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 19 novembre 2006
19 nov. 2006 à 21:02
Heu...je sais pas ce que tu fais ces 10 prochaines années mais....t'éloignes pas trop de ce site !!!

Merci beaucoup pour ton aide très précieuse SevyC64.
0
thyphonfalcon Messages postés 41 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 12 mai 2007
19 nov. 2006 à 21:08
oups..désolé Catara, j'avais suivis ton conseil...j'ai piqué un petit roupillon !!

Et merci à toi Casy, j'avais pas vu la suite...effefctivement, il faut le déclarer dans les conditions et ne pas oublier
Une phrase débute par un majuscule et ce termine par un point. (puis un espace après le point si tu es sur la même ligne) comme le fait justement remarqué Casy.
Bonsoir à tous

Thyphon
0
Rejoignez-nous