begin process at 2012 02 13 08:31:08
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > COLORISATION SYNTAXIQUE

COLORISATION SYNTAXIQUE


 Information sur la source

Note :
Aucune note
Catégorie :Texte Niveau :Débutant Date de création :27/01/2005 Date de mise à jour :27/01/2005 00:44:48 Vu / téléchargé :3 716 / 324

Auteur : ScSami

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voici le problème de la colorisation syntaxique expliqué partiellement.

Cette source est hyper commenté et destinée aux plus débutants qui y apprendront de nombreuses choses.

La routine reste à être amélioré pour être utilisée serieusement mais les bases sont là.

Cependant, l'ayant fait sur un 2 Ghz, je me demande comment il tourne sur un plus petit (style 300 Mhz). Si vous êtes dans ce cas, tenez-moi informé des performances.

Tout est dans le ZIP.

Source

  • 'Cette variable sert à ne pas réappeler
  • ' une procédure en cours...
  • Private AntiRecursif As Boolean
  • Private CoulRouge As Byte
  • Private CoulVerte As Byte
  • Private CoulBleue As Byte
  • Private Couleur As Long
  • Private CoulRougeElement As Byte
  • Private CoulVerteElement As Byte
  • Private CoulBleueElement As Byte
  • Private CouleurElement As Long
  • Private varItem As Long
  • '================================================================
  • ' INITIALISATION DU PROGRAMME
  • '================================================================
  • Private Sub Form_Load()
  • varItem = 0
  • End Sub
  • '================================================================
  • '================================================================
  • '================================================================
  • '================================================================
  • ' GESTION DES COULEURS
  • '================================================================
  • Private Sub HScrollRouge_Change(): Call HScrollRouge_Scroll: End Sub
  • Private Sub HScrollRouge_Scroll()
  • CoulRouge = HScrollRouge.Value
  • 'Note: Cstr permet de convertir un nombre
  • ' en texte sans ajouter d'espace avant
  • ' comme le fait Str().
  • ztxRouge.Text = CStr(CoulRouge)
  • Call CouleurChanged
  • End Sub
  • Private Sub HScrollVerte_Change(): Call HScrollVerte_Scroll: End Sub
  • Private Sub HScrollVerte_Scroll()
  • CoulVerte = HScrollVerte.Value
  • ztxVerte.Text = CStr(CoulVerte)
  • Call CouleurChanged
  • End Sub
  • Private Sub HScrollBleue_Change(): Call HScrollBleue_Scroll: End Sub
  • Private Sub HScrollBleue_Scroll()
  • CoulBleue = HScrollBleue.Value
  • ztxBleue.Text = CStr(CoulBleue)
  • Call CouleurChanged
  • End Sub
  • Private Sub CouleurChanged()
  • 'Notes :
  • 'La fonction RGB permet d'obtenir le numéro d'une couleur
  • ' en fonction des 3 composantes rouge, vert et bleu.
  • ' Ce nombre est compris (lorsqu'on travail en 24 bits comme
  • ' dans la pluspart des cas) entre 0 et 16'777'215.
  • ' 24 bits = 2 puissance 24 = 16'777'216 couleurs possibles
  • ' La variable devra donc être de type Long et non de de type
  • ' Integer. Par contre, les sub-pixels, eux, varient de 0 à 255
  • ' (soit 256 nuances) et sont donc de type Byte.
  • 'La fonction CByte convertie un texte en nombre de type Byte justement.
  • Couleur = RGB(CByte(ztxRouge.Text), CByte(ztxVerte.Text), CByte(ztxBleue.Text))
  • ShapeCouleur.BackColor = Couleur
  • End Sub
  • '================================================================
  • '================================================================
  • '================================================================
  • '================================================================
  • ' GESTION DE LA LISTE
  • '================================================================
  • Private Sub ztxElement_KeyUp(KeyCode As Integer, Shift As Integer)
  • 'Static veut dire que la variable sera conservée
  • ' après chaque appel de cette procédure.
  • 'Autrement dit, elle ne sera pas détruite à la fin.
  • 'On utilise cette technique parce que cette procédure
  • ' est appelée souvent.
  • Static t As Integer 'Variable temporaire
  • Static varModifier As Boolean 'Variable de détection
  • If AntiRecursif = True Then Exit Sub
  • AntiRecursif = True
  • 'Dès qu'on appuye sur une touche,
  • If ztxElement.Text = "" Then
  • 'Désactive le bouton Ajouter et Modifier s'il n'y a pas de texte
  • btnAjouter.Enabled = False
  • btnModifier.Enabled = False
  • Else
  • 'S'il y a du texte :
  • 'Il faut parcourir la liste pour savoir
  • ' si ce texte existe déjà ou non.
  • 'S'il existe déjà, on active le bouton Modifier
  • ' et on désactive le bouton Ajouter.
  • 'Dans le cas contraire, on fait l'inverse.
  • varModifier = False
  • If ListeDesMots.ListCount > 0 Then
  • 'Ne teste ça que si il y au moins un mot dans la liste
  • For t = 0 To (ListeDesMots.ListCount - 1)
  • If ListeDesMots.List(t) = ztxElement.Text Then varModifier = True: Exit For
  • Next t
  • End If
  • If varModifier = True Then
  • btnModifier.Enabled = True
  • btnAjouter.Enabled = False
  • Else
  • btnModifier.Enabled = False
  • btnAjouter.Enabled = True
  • End If
  • End If
  • AntiRecursif = False
  • End Sub
  • Private Sub btnAjouter_Click()
  • 'Test de sécurité...
  • If ztxElement.Text = "" Then Exit Sub
  • varItem = varItem + 1
  • ListeDesMots.AddItem ztxElement.Text
  • ListeDesCouleurs.AddItem CStr(CouleurElement)
  • ListeDesMots.ItemData(ListeDesMots.NewIndex) = varItem
  • ListeDesCouleurs.ItemData(ListeDesCouleurs.NewIndex) = varItem
  • ListeDesMots.ListIndex = ListeDesMots.NewIndex
  • btnModifier.Enabled = True
  • btnAjouter.Enabled = False
  • btnSupprimer.Enabled = True
  • End Sub
  • Private Sub btnSupprimer_Click()
  • Static t As Long
  • If ListeDesMots.ListIndex < 0 Then btnSupprimer.Enabled = False: Exit Sub
  • For t = 0 To (ListeDesCouleurs.ListCount - 1)
  • If ListeDesMots.ItemData(ListeDesMots.ListIndex) = ListeDesCouleurs.ItemData(t) Then
  • ListeDesCouleurs.RemoveItem t
  • Exit For
  • End If
  • Next t
  • t = ListeDesMots.ListIndex
  • ListeDesMots.RemoveItem ListeDesMots.ListIndex
  • If ListeDesMots.ListCount < 1 Then
  • ztxElement.Text = ""
  • CouleurElement = 0
  • ShapeCouleurElement.BackColor = 0
  • btnModifier.Enabled = False
  • btnAjouter.Enabled = False
  • btnSupprimer.Enabled = False
  • Else
  • If t > (ListeDesMots.ListCount - 1) Then t = (ListeDesMots.ListCount - 1)
  • ListeDesMots.ListIndex = t
  • btnModifier.Enabled = True
  • btnAjouter.Enabled = False
  • btnSupprimer.Enabled = True
  • End If
  • End Sub
  • Private Sub btnModifier_Click()
  • Static t As Long
  • If ztxElement = "" Then btnModifier.Enabled = False: Exit Sub
  • For t = 0 To (ListeDesCouleurs.ListCount - 1)
  • If ListeDesCouleurs.ItemData(t) = ListeDesMots.ItemData(ListeDesMots.ListIndex) Then
  • ListeDesCouleurs.ItemData(t) = CouleurElement
  • End If
  • Next t
  • End Sub
  • Private Sub btnChangerCouleur_Click()
  • ShapeCouleurElement.BackColor = Couleur
  • CouleurElement = Couleur
  • End Sub
  • Private Sub ListeDesMots_Click()
  • Static BackCouleur As Long
  • Static t As Long
  • If ListeDesMots.ListIndex < 0 Then
  • ztxElement.Text = ""
  • CouleurElement = 0
  • ShapeCouleurElement.BackColor = 0
  • btnModifier.Enabled = False
  • btnAjouter.Enabled = False
  • btnSupprimer.Enabled = False
  • Else
  • ztxElement.Text = ListeDesMots.List(ListeDesMots.ListIndex)
  • For t = 0 To (ListeDesCouleurs.ListCount - 1)
  • If ListeDesCouleurs.ItemData(t) = _
  • ListeDesMots.ItemData(ListeDesMots.ListIndex) Then _
  • CouleurElement = CLng(ListeDesCouleurs.List(t))
  • Next t
  • ShapeCouleurElement.BackColor = CouleurElement
  • btnModifier.Enabled = True
  • btnAjouter.Enabled = False
  • btnSupprimer.Enabled = True
  • End If
  • End Sub
  • '================================================================
  • ' COLORATION SYNTAXIQUE
  • '================================================================
  • 'Note: Cette méthode pourait aussi, pour rendre l'utilisation
  • ' moins lourde, se lancer toutes les x millisecondes via
  • ' un timer. Pour cela, il faudrait placer tout ce code
  • ' dans la procédure d'événement du timer...
  • Private Sub RichTextBox1_KeyPress(KeyAscii As Integer)
  • 'Méthode par recherche :
  • '(méthode lente mais c'est pour l'exemple)
  • Static t As Single
  • Static tt As Single
  • Static TextRechercher As String
  • Static Position As Single
  • Static varDebut As Single
  • Static Coul As Long
  • Static RechercheTerminer As Boolean
  • 'La méthode consiste à recherche tous les mots de la liste
  • ' et à reconsituer les balises RTF.
  • 'Note : plus il y a de mots, plus le programme sera lent!
  • 'Tout d'abord, on récupère la position actuelle du curseur.
  • Position = RichTextBox1.SelStart
  • 'Efface toutes les couleurs du texte
  • ' Note: une méthode plus fine pourrait être trouvée...
  • RichTextBox1.SelStart = 1
  • RichTextBox1.SelLength = Len(RichTextBox1.Text)
  • RichTextBox1.SelColor = 0 'Encre Noir par défaut...
  • 'Un autre moyen :
  • 'RichTextBox1.TextRTF = RichTextBox1.Text
  • 'S'il n'y a aucun mot, on sort.
  • If ListeDesMots.ListCount < 1 Then
  • RichTextBox1.SelStart = Position
  • Exit Sub
  • End If
  • For t = 0 To (ListeDesMots.ListCount - 1)
  • RechercheTerminer = False
  • TextRechercher = ListeDesMots.List(t)
  • For tt = 0 To (ListeDesCouleurs.ListCount - 1)
  • If ListeDesCouleurs.ItemData(tt) = ListeDesMots.ItemData(t) Then _
  • Coul = ListeDesCouleurs.List(tt): Exit For
  • Next tt
  • varDebut = 1
  • RichTextBox1.SelStart = varDebut
  • Do
  • 'rtfMatchCase = Respecter la casse
  • ' (c.a.d. les majuscules et les minuscules)
  • ' Puisque la "Fin" est omise, toutes les recherches
  • ' s'effecturons jusqu'a la fin texte.
  • 'rtfWholeWord = Rechercher par mot.
  • tt = RichTextBox1.Find(TextRechercher, varDebut, , rtfWholeWord + rtfMatchCase)
  • If tt = -1 Then
  • 'Il n'y a plus d'occurrence
  • RechercheTerminer = True
  • Else
  • 'La recherche à aboutie. Il faut remplacer le mot
  • ' par le mot + les balises RTF de couleur.
  • 'Il faut ensuite placer le curseur à la fin du
  • ' mot pour poursuivre la recherche.
  • RichTextBox1.SelColor = Coul
  • varDebut = varDebut + RichTextBox1.SelLength
  • End If
  • Loop While RechercheTerminer <> True
  • Next t
  • RichTextBox1.SelStart = Position
  • End Sub
  • '================================================================
  • '================================================================
  • '================================================================
  • '================================================================
  • ' NOTES DE FIN
  • '================================================================
  • ' La routine de recherche n'est pas très fine (surtout s'agissant
  • ' de la gestion des espaces et des cas particuliers) mais c'est
  • ' à vous d'en faire ce que vous voudrez.
  • ' Il ne reste plus qu'a rajouter la gestion de l'enregistrement
  • ' des fichiers (RTF ou TXT).
  • ' Notez que ma gestion des couleurs n'est pas très performante.
  • ' Il vaudrait mieux utiliser des PictureBox et utiliser le
  • ' contrôle ActiveX "Microsoft CommonDialog"...
  • ' Je n'ai pas non plus filtré les entrées texte (p.ex. enlever
  • ' les espaces de début et de fin des expressions).
  • '
  • ' A VOUS DE JOUER !
  • '================================================================
  • '================================================================
  • '================================================================
'Cette variable sert à ne pas réappeler
' une procédure en cours...
Private AntiRecursif As Boolean

Private CoulRouge As Byte
Private CoulVerte As Byte
Private CoulBleue As Byte
Private Couleur As Long

Private CoulRougeElement As Byte
Private CoulVerteElement As Byte
Private CoulBleueElement As Byte
Private CouleurElement As Long

Private varItem As Long



'================================================================
' INITIALISATION DU PROGRAMME
'================================================================
Private Sub Form_Load()
 varItem = 0
End Sub
'================================================================
'================================================================
'================================================================



'================================================================
' GESTION DES COULEURS
'================================================================
Private Sub HScrollRouge_Change(): Call HScrollRouge_Scroll: End Sub
Private Sub HScrollRouge_Scroll()
 CoulRouge = HScrollRouge.Value
 'Note: Cstr permet de convertir un nombre
 ' en texte sans ajouter d'espace avant
 ' comme le fait Str().
 ztxRouge.Text = CStr(CoulRouge)
 Call CouleurChanged
End Sub
Private Sub HScrollVerte_Change(): Call HScrollVerte_Scroll: End Sub
Private Sub HScrollVerte_Scroll()
 CoulVerte = HScrollVerte.Value
 ztxVerte.Text = CStr(CoulVerte)
 Call CouleurChanged
End Sub
Private Sub HScrollBleue_Change(): Call HScrollBleue_Scroll: End Sub
Private Sub HScrollBleue_Scroll()
 CoulBleue = HScrollBleue.Value
 ztxBleue.Text = CStr(CoulBleue)
 Call CouleurChanged
End Sub
Private Sub CouleurChanged()
 'Notes :
 'La fonction RGB permet d'obtenir le numéro d'une couleur
 ' en fonction des 3 composantes rouge, vert et bleu.
 ' Ce nombre est compris (lorsqu'on travail en 24 bits comme
 ' dans la pluspart des cas) entre 0 et 16'777'215.
 ' 24 bits = 2 puissance 24 = 16'777'216 couleurs possibles
 ' La variable devra donc être de type Long et non de de type
 ' Integer. Par contre, les sub-pixels, eux, varient de 0 à 255
 ' (soit 256 nuances) et sont donc de type Byte.
 'La fonction CByte convertie un texte en nombre de type Byte justement.
 Couleur = RGB(CByte(ztxRouge.Text), CByte(ztxVerte.Text), CByte(ztxBleue.Text))
 ShapeCouleur.BackColor = Couleur
End Sub
'================================================================
'================================================================
'================================================================



'================================================================
' GESTION DE LA LISTE
'================================================================
Private Sub ztxElement_KeyUp(KeyCode As Integer, Shift As Integer)
 'Static veut dire que la variable sera conservée
 ' après chaque appel de cette procédure.
 'Autrement dit, elle ne sera pas détruite à la fin.
 'On utilise cette technique parce que cette procédure
 ' est appelée souvent.
 Static t As Integer  'Variable temporaire
 Static varModifier As Boolean  'Variable de détection
 
 If AntiRecursif = True Then Exit Sub
 AntiRecursif = True
 
 'Dès qu'on appuye sur une touche,
 If ztxElement.Text = "" Then
  'Désactive le bouton Ajouter et Modifier s'il n'y a pas de texte
  btnAjouter.Enabled = False
  btnModifier.Enabled = False
 Else
  'S'il y a du texte :
  'Il faut parcourir la liste pour savoir
  ' si ce texte existe déjà ou non.
  'S'il existe déjà, on active le bouton Modifier
  ' et on désactive le bouton Ajouter.
  'Dans le cas contraire, on fait l'inverse.
  varModifier = False
  If ListeDesMots.ListCount > 0 Then
   'Ne teste ça que si il y au moins un mot dans la liste
   For t = 0 To (ListeDesMots.ListCount - 1)
    If ListeDesMots.List(t) = ztxElement.Text Then varModifier = True: Exit For
   Next t
  End If
  If varModifier = True Then
   btnModifier.Enabled = True
   btnAjouter.Enabled = False
  Else
   btnModifier.Enabled = False
   btnAjouter.Enabled = True
  End If
 End If
 
 AntiRecursif = False
End Sub

Private Sub btnAjouter_Click()
 'Test de sécurité...
 If ztxElement.Text = "" Then Exit Sub
 
 varItem = varItem + 1
 ListeDesMots.AddItem ztxElement.Text
 ListeDesCouleurs.AddItem CStr(CouleurElement)
 ListeDesMots.ItemData(ListeDesMots.NewIndex) = varItem
 ListeDesCouleurs.ItemData(ListeDesCouleurs.NewIndex) = varItem
 ListeDesMots.ListIndex = ListeDesMots.NewIndex
 
 btnModifier.Enabled = True
 btnAjouter.Enabled = False
 btnSupprimer.Enabled = True
End Sub

Private Sub btnSupprimer_Click()
 Static t As Long
 
 If ListeDesMots.ListIndex < 0 Then btnSupprimer.Enabled = False: Exit Sub
 
 For t = 0 To (ListeDesCouleurs.ListCount - 1)
  If ListeDesMots.ItemData(ListeDesMots.ListIndex) = ListeDesCouleurs.ItemData(t) Then
   ListeDesCouleurs.RemoveItem t
   Exit For
  End If
 Next t
 
 t = ListeDesMots.ListIndex
 ListeDesMots.RemoveItem ListeDesMots.ListIndex
 If ListeDesMots.ListCount < 1 Then
  ztxElement.Text = ""
  CouleurElement = 0
  ShapeCouleurElement.BackColor = 0
  btnModifier.Enabled = False
  btnAjouter.Enabled = False
  btnSupprimer.Enabled = False
 Else
  If t > (ListeDesMots.ListCount - 1) Then t = (ListeDesMots.ListCount - 1)
  ListeDesMots.ListIndex = t
  btnModifier.Enabled = True
  btnAjouter.Enabled = False
  btnSupprimer.Enabled = True
 End If

End Sub

Private Sub btnModifier_Click()
 Static t As Long
 
 If ztxElement = "" Then btnModifier.Enabled = False: Exit Sub
 
 For t = 0 To (ListeDesCouleurs.ListCount - 1)
  If ListeDesCouleurs.ItemData(t) = ListeDesMots.ItemData(ListeDesMots.ListIndex) Then
   ListeDesCouleurs.ItemData(t) = CouleurElement
  End If
 Next t
End Sub

Private Sub btnChangerCouleur_Click()
 ShapeCouleurElement.BackColor = Couleur
 CouleurElement = Couleur
End Sub

Private Sub ListeDesMots_Click()
 Static BackCouleur As Long
 Static t As Long
 
 If ListeDesMots.ListIndex < 0 Then
  ztxElement.Text = ""
  CouleurElement = 0
  ShapeCouleurElement.BackColor = 0
  btnModifier.Enabled = False
  btnAjouter.Enabled = False
  btnSupprimer.Enabled = False
 Else
  ztxElement.Text = ListeDesMots.List(ListeDesMots.ListIndex)
  For t = 0 To (ListeDesCouleurs.ListCount - 1)
   If ListeDesCouleurs.ItemData(t) = _
      ListeDesMots.ItemData(ListeDesMots.ListIndex) Then _
      CouleurElement = CLng(ListeDesCouleurs.List(t))
  Next t
  ShapeCouleurElement.BackColor = CouleurElement
  btnModifier.Enabled = True
  btnAjouter.Enabled = False
  btnSupprimer.Enabled = True
 End If
End Sub



'================================================================
' COLORATION SYNTAXIQUE
'================================================================
'Note: Cette méthode pourait aussi, pour rendre l'utilisation
' moins lourde, se lancer toutes les x millisecondes via
' un timer. Pour cela, il faudrait placer tout ce code
' dans la procédure d'événement du timer...

Private Sub RichTextBox1_KeyPress(KeyAscii As Integer)
 'Méthode par recherche :
 '(méthode lente mais c'est pour l'exemple)
 Static t As Single
 Static tt As Single
 Static TextRechercher As String
 Static Position As Single
 Static varDebut As Single
 Static Coul As Long
 Static RechercheTerminer As Boolean
 
 'La méthode consiste à recherche tous les mots de la liste
 ' et à reconsituer les balises RTF.
 'Note :  plus il y a de mots, plus le programme sera lent!
 
 'Tout d'abord, on récupère la position actuelle du curseur.
 Position = RichTextBox1.SelStart
 
 'Efface toutes les couleurs du texte
 ' Note: une méthode plus fine pourrait être trouvée...
 RichTextBox1.SelStart = 1
 RichTextBox1.SelLength = Len(RichTextBox1.Text)
 RichTextBox1.SelColor = 0  'Encre Noir par défaut...
 'Un autre moyen :
 'RichTextBox1.TextRTF = RichTextBox1.Text
 
 'S'il n'y a aucun mot, on sort.
 If ListeDesMots.ListCount < 1 Then
  RichTextBox1.SelStart = Position
  Exit Sub
 End If
 
 For t = 0 To (ListeDesMots.ListCount - 1)
  RechercheTerminer = False
  TextRechercher = ListeDesMots.List(t)
  For tt = 0 To (ListeDesCouleurs.ListCount - 1)
   If ListeDesCouleurs.ItemData(tt) = ListeDesMots.ItemData(t) Then _
      Coul = ListeDesCouleurs.List(tt): Exit For
  Next tt
  varDebut = 1
  RichTextBox1.SelStart = varDebut
  Do
   'rtfMatchCase = Respecter la casse
   ' (c.a.d. les majuscules et les minuscules)
   ' Puisque la "Fin" est omise, toutes les recherches
   ' s'effecturons jusqu'a la fin texte.
   'rtfWholeWord = Rechercher par mot.
   tt = RichTextBox1.Find(TextRechercher, varDebut, , rtfWholeWord + rtfMatchCase)
   If tt = -1 Then
    'Il n'y a plus d'occurrence
    RechercheTerminer = True
   Else
    'La recherche à aboutie. Il faut remplacer le mot
    ' par le mot + les balises RTF de couleur.
    'Il faut ensuite placer le curseur à la fin du
    ' mot pour poursuivre la recherche.
    RichTextBox1.SelColor = Coul
    varDebut = varDebut + RichTextBox1.SelLength
   End If
  Loop While RechercheTerminer <> True
 Next t
 
 RichTextBox1.SelStart = Position
End Sub
'================================================================
'================================================================
'================================================================



'================================================================
' NOTES DE FIN
'================================================================
' La routine de recherche n'est pas très fine (surtout s'agissant
' de la gestion des espaces et des cas particuliers) mais c'est
' à vous d'en faire ce que vous voudrez.
' Il ne reste plus qu'a rajouter la gestion de l'enregistrement
' des fichiers (RTF ou TXT).
' Notez que ma gestion des couleurs n'est pas très performante.
' Il vaudrait mieux utiliser des PictureBox et utiliser le
' contrôle ActiveX "Microsoft CommonDialog"...
' Je n'ai pas non plus filtré les entrées texte (p.ex. enlever
' les espaces de début et de fin des expressions).
'
' A VOUS DE JOUER !
'================================================================
'================================================================
'================================================================


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

27 janvier 2005 00:44:48 :
Ajout du code sur le site...

 Sources du même auteur

Source avec Zip Source avec une capture MOUSE SPEED AND WEIGHT : RETOUR DE FORCE VIRTUEL !
DE RGB À R, G ET B, LA MEILLEUR TECHNIQUE EN VB !
Source avec Zip Source avec une capture POT DE PEINTURE (REMPLISSAGE/FLOOD)
Source avec Zip Source avec une capture INTERSECTION
Source avec Zip Source avec une capture CHAÎNE VERTÉBRALE OPTIMALE

 Sources de la même categorie

Source avec Zip Source avec une capture MASQUE DE SAISIE NUMÉRIQUE par acive
Source avec Zip Source .NET (Dotnet) COMPTEUR DE NOMBRE DE MOTS DANS UN TEXTE par alpha5
Source avec Zip Source avec une capture HM - BLOCNOTE par hassenmajor
Source .NET (Dotnet) [VB.NET] CLASS DE COLORATION SYNTAXIQUE "ON THE FLY" par huzima
Source avec Zip Source avec une capture PERSONNALISEZ VOS BOÎTES DE MESSAGE (X)HTML par medjahedScript

Commentaires et avis

Commentaire de cire2003 le 27/01/2005 02:21:59

Bonne source, mais petits problèmes... lors de la coloration, parfois, certaine couleur n'apparaissent pas telle que supposé. Exemple: "au" de vrai être coloré en vert. Il n'y a que le "a" qui change de couleur. Parfois cela fonctionne et d'autre fois non. J'ai fait le test avec d'autre mots dans d'autre cas et cela arrive souvent. Il m'est même arrivé que, lorsque j'écrit à la suite d'un mot coloré, tout le reste de la ligne reste de la couleur qu'un des mots est colorié. Sinon, cette source me sera pratique, merci

Commentaire de ScSami le 27/01/2005 16:33:00

Oui, je pense savoir d'où ça vient.

Il faut déclarer une variable locale au programme pour éviter la récursivité.

Private AntiRecusif as boolean

Form_Load...
...

Puis, dans la procédure "Key_Press" mettre ci au début

"
If AntiRecursif = True then exit sub
AntiRecursif = True
"
et à la fin (et partout avant où il y a un Exit Sub")

"AntiRecursif = False"

Enfin, je pense.
Le problème vient sans doute du fait que la routine de colorisation est trop lente...

A vous de l'améliorer maintenant que vous avez la base.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales