Coloration syntaxique

Soyez le premier à donner votre avis sur cette source.

Vue 10 039 fois - Téléchargée 775 fois

Description

Bonjour à tous !

Cette source de coloration syntaxique colore seulement la ligne active, à des moments particuliers qui dépendent de ce que fait l'utilisateur. Plus précisément, la coloration est effectuée via deux méthodes :

1. En cas de collage, j'utilise la méthode classique qui consiste à colorer tout le texte.
2. En cas de saisie par l'utilisateur, la méthode change. Dès qu'une ligne active a été modifée, et que l'utilisateur change de ligne, la coloration n'est appliquée qu'à la ligne qui vient de subir les changements.

L'intérêt réside bien entendu dans la quasi-suppression des tremblements et autres cligotements. Pour ma part, je n'en observe presque aucun sur un 1.5 GHz. Je doute que des machines plus performantes en aient davantage.

Par ailleurs, la coloration syntaxique fonctionne pour :

- Les mots-clefs
- Les commentaires
- Les chaînes de caractères
- Les valeurs hexadécimales
- Les nombres

Voici les propriétés, méthodes et événements auxquels vous avez accès :

PROPRIETES
----------------

ColorizeComments Active / désactive la coloration des commentaires
ItalicizeComments Ecriture des commentaires en italique
CommentsColor Couleur à utiliser pour colorer les commentaires
Comments Motif d'expression rationnelle utilisé pour les commentaires

ColorizeStrings Active / désactive la coloration des chaînes de caractères
StringsColor Couleur à utiliser pour colorer les chaînes de caractères
Strings Motif d'expression rationnelle utilisé pour les chaînes de caractères

ColorizeHexValues Active / désactive la coloration des valeurs hexadécimales
HexValuesColor Couleur à utiliser pour colorer les valeurs hexadécimales
HexValues Motif d'expression rationnelle utilisé pour les valeurs hexadécimales

ColorizeNumbers Active / désactive la coloration des nombres
NumbersColor Couleur à utiliser pour colorer les nombres
Numbers Motif d'expression rationnelle utilisé pour les nombres

ColorizeKeyWords Active / désactive la coloration des mots-clefs
EmboldenKeyWords Ecriture des mots-clefs en caractères gras
KeyWordsColor Couleur à utiliser pour colorer les mots-clefs
KeyWords Motif d'expression rationnelle utilisé pour les mots-clefs

BackColor Couleur d'arrière-plan du contrôle
ForeColor Couleur du texte non coloré
Font Police de caractères utilisée

ShowLines Affiche ou masque la numérotation des lignes

METHODES
----------------

CurrLineIndex Détermine le numéro de la ligne active (numérotation à partir de 0)
LineIndex Détermine le numéro d'une ligne quelconque (numérotation à partir de 0)

CurrFirstCharIndex Détermine l'index du premier caractère de la ligne active
FirstCharIndex Détermine l'index du premier caractère d'une ligne quelconque

CurrLineLength Détermine la longueur (nombre de caractères) de la ligne active
LineLength Détermine la longueur (nombre de caractères) d'une ligne quelconque

CurrLineText Récupère le texte de la ligne active
LineText Récupère le texte d'une ligne quelconque

MouseChar Code du caractère qui se trouve sous le curseur (souris)

EVENEMENTS
----------------

Click Clic sur le contrôle
DblClick Double-clic sur le contrôle
MouseMove Déplacement du curseur sur le contrôle
MouseUp Un bouton de la souris est relâché
MouseDown Un bouton de la souris est enfoncé
KeyUp Une touche est relâchée
KeyDown Une touche est enfoncée
KeyPress Appui d'une touche par l'utilisateur
Change Le contenu du contrôle a été modifié
Paste Un collage vient d'être détecté

Voilà tout ! Tous les commentaires, toutes les suggestions, toutes les critiques, etc..., sont les bienvenus !

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Fonctionne nikel chez moi...
Messages postés
2
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
5 mars 2008

salut,
excellent travail !
le project vbp marche trés bien mais l'app (.exe) ne marche pas , car le vbscript.dll (ver 5.5) est ecrit dans le regedit :"..\system32\vbscript.dll\3"
l'app cherche le fichier "3" et aficher un msg d'erreur .
est-ce qu'il ya une solution ?
Messages postés
251
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
4 mars 2008
1
Bonjour à tous !

Une mise à jour est en préparation : nouvelles fonctions, code revu, etc...

Cordialement,
Cacophrène
Messages postés
1812
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
1
Salut, je trouve cette source excellente.
Je vais probablement l'utiliser telle quelle dans mon prochain projet (si je décide d'inclure la fonctionnalité qui requiert ce controle).

Bon boulot (10/10) !
@+
Messages postés
251
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
4 mars 2008
1
Salut !

Au départ, cette source n'avait pas pour but d'être complète. Elle devait juste illustrer une méthode de coloration qui mime celle de l'IDE de VB, dont il n'existait pas d'exemple sur le site. Suite à vos commentaires, je l'ai étoffée pour en faire un contrôle utilisateur maniable. "Les" bugs signalés par Warning sont au nombre d'un seul. Et encore, ce n'est pas un bug. Cela vient d'un mauvais ajustement de la valeur de RightMargin, qui conduit le RichTextBox à renvoyer à la ligne les chaînes de caractères les plus longues, d'où :

1. Il y a une ligne qui n'a qu'un guillemet ouvrant -> pas reconnue comme chaîne par le motif d'expression rationnelle
2. Eventuellement une ou plusieurs lignes sans guillemets -> idem
3. Une ligne avec un guillemet fermant seul -> idem

Pour corriger ce problème, il faut augmenter RightMargin. J'ai quant à moi repéré un bug que je pense avoir résolu dans cette mise à jour. Cependant, si vous en trouvez d'autres, n'hésitez pas à me le faire savoir. Cependant, la rentrée de la fac va interrompre pour pas mal de temps mes mises à jour sur cette source. Cela ne veut pas dire que je ne ferai plus de mises à jour. Cela veut dire que ce ne sera pas pour tout de suite. J'ai déjà beaucoup modifié ce code en peu de temps, alors que je ne m'étais pas fixé ce but. Je continuerai selon les possibilités.

Cordialement,
Cacophrène

PS : Bonne idée de lier les sources, l'une donnant du HTML, l'autre du RTF
Afficher les 22 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.