RTB gras !!!

Messages postés
189
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
3 avril 2005
- - Dernière réponse : cs_DARKSIDIOUS
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
- 10 févr. 2004 à 13:06
Bonjour tout le monde !

Mon problème est que j'aimerais pouvoir choisir un morceau de texte particulier dans un string reçu par winsock. Jusque là ça va, mais ensuite je voudrais faire en sorte que ce morceau-ci soit inscrit en gras dans une RTB, alors que le reste du string sera inscrit en normal...

Exemple :

Le winsock reçoit : "[p]Pseudo/pLe message ensuite"
Ce que je voudrais, c'est que ce qui est entre les balises [p] et /p soit inscrit en gras dans ma RTB et que le message s'inscrive normalement...

Si quelqu'un a une idée, merci d'avance !

Seb.
Afficher la suite 

5 réponses

Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
83
0
Merci
Voici le code qu'il faut mettre :

'déclaration des variables privées
Dim DBL_Position(1) As Double 'stocke la position de la balise

    'on cherche dans le richtextbox envoyé, les balises de mise en forme
    With RTB_RichTextBox_MiseEnForme
        
        'on boucle sur chaque balise
        While .Find(STR_BaliseStart_MiseEnForme) <> -1
        
            'on récupère la position de la balise
            DBL_Position(0) = .Find(STR_BaliseStart_MiseEnForme)
            
            'on efface la balise
            .SelStart = DBL_Position(0)
            .SelLength = Len(STR_BaliseStart_MiseEnForme)
            .SelText = ""
            
            'on cherche la position de la prochaine balise
            DBL_Position(1) = .Find(STR_BaliseFinish_MiseEnForme)
            If DBL_Position(1) = -1 Then
                        
                'on ne peut pas trouver la prochaine balise => on évite d'appliquer le style
                .SelStart = Len(.Text)
            
            Else
            
                'on met le texte en style
                .SelStart = DBL_Position(0)
                .SelLength = (DBL_Position(1) - DBL_Position(0))
                .SelBold = BOL_FontBold_MiseEnForme
                .SelColor = LNG_ForeColor_MiseEnForme
                .SelItalic = BOL_FontItalic_MiseEnForme
                .SelUnderline = BOL_FontUnderline_MiseEnForme
                
                'on remet le curseur à 0
                .SelLength = 0
                .SelBold = False

                'on efface la balise
                .SelStart = .Find(STR_BaliseFinish_MiseEnForme)
                .SelLength = Len(STR_BaliseFinish_MiseEnForme)
                .SelText = ""
                .SelLength = 0
                .SelStart = 0
                       
            End If
            
            'on évite de bloquer le système en permettant aux autres application de fonctionner
            DoEvents
        
        Wend
                
    End With


Attention cependant, le SelBold provoque un bug : si tu déplace la sélection, alors tout ton richtextbox deviendras en gras !

</td></tr></table>
DarK Sidious

[Responsable de la rubrique API et responsable VB du site www.ProgOtoP.com]
Messages postés
200
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
3 août 2004
0
Merci
J'ai qqs doutes sur la puissance de la RTB et/ou avec vb.
Quand on voit yahoo messager par exemple, et son control Webbrowser, comme c'est simple puissant, les affichages codés via html, je sais pas ce que tu essayes de faire avec ta socket a l'affichage, mais installe Yahoo tchatte avec quelqu'un (moi ? : tr0piiic) tu verras c'est baleze.

Bonne programmation.
;-)
Messages postés
200
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
3 août 2004
0
Merci
Y a un bug vbfrance lol, non ?.

o_O
Messages postés
189
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
3 avril 2005
0
Merci
Merci bien pour ton aide Darksidious, mais un problème persiste... Voilà mon code :

Private Sub Command1_Click()
Dim BalD As Double, BalF As Double

Mess = "[p]PseuDo[p] : Ceci est le message !!!"  'Le message reçu par winsock
txtReceive.Text = Mess   'on le copie dans la RTB

BalD = txtReceive.Find("[p]", 0, Len(Mess))   'Première balise
BalF = txtReceive.Find("[p]", BalD + 3, Len(Mess))   'Seconde balise

With txtReceive

 .SelStart = BalD + 3   'On commence la sélection à partir de la fin de la première balise
 .SelLength = BalF - (BalD + 3)   'On la termine au début de la balise de fin
 .SelBold = True     'On met en gras
 .SelColor = vbBlue  'On met en bleu
 
 .SelLength = 0       'Réinitialisation
 .SelBold = False     'Gras enlevé
 .SelColor = vbBlack  'Couleur noire
 
 
 'Suppression des balises
 .SelStart = BalD
 .SelLength = 3
 .SelText = ""
 .SelStart = BalF - 3
 .SelLength = 3
 .SelText = ""
 
End With

End Sub

----------------------------------------

Private Sub Command2_Click()
Dim BalD As Double, BalF As Double

Mess = "[p]PseuDo[p] : Second message"   'Le winsock reçoit ENSUITE un second message
txtReceive.Text = Mess & vbCrLf & txtReceive.Text   'On le place au dessus du premier
 
BalD = txtReceive.Find("[p]", 0, Len(Mess))    'Première balise
BalF = txtReceive.Find("[p]", BalD + 3, Len(Mess))    'Seconde balise

With txtReceive

 .SelStart = BalD + 3   'On commence la sélection à partir de la fin de la première balise
 .SelLength = BalF - (BalD + 3)   'On la termine au début de la balise de fin
 .SelBold = True     'On met en gras
 .SelColor = vbBlue  'On met en bleu
 
 .SelLength = 0       'Réinitialisation
 .SelBold = False     'Gras enlevé
 .SelColor = vbBlack  'Couleur noire
 
 
 'Suppression des balises
 .SelStart = BalD
 .SelLength = 3
 .SelText = ""
 .SelStart = BalF - 3
 .SelLength = 3
 .SelText = ""
 
End With

End Sub



Voilà, en fait, pour le Command1_Click (la réception et coloration du premier message), tout fonctionne bien. Mais c'est à la réception du second message (simulé par le Command2_Click) que tout le texte de la RTB devient gras et bleu !!! Why ?

Merci encore,

Seb.

P.S : Bubble44, quand j'aurai réussi à me sortir de cette RTB, peut-être que je commencerai à avoir le soupçon d'une pensée pour le webbrowser ;)
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
83
0
Merci
Suite de ce post par conversation privé !

DarK Sidious

[Responsable de la rubrique API et responsable VB du site www.ProgOtoP.com]