PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → coloration syntaxique Scintillanet/scintilla
coloration syntaxique Scintillanet/scintilla
Débuté par Renier Florent, 07 déc. 2017 16:10 - 4 réponses
Posté le 07 décembre 2017 - 16:10
Bonjour,

Je souhaite utiliser un champ de saisie avec une coloration syntaxique.
J'ai cherché assez longtemps et les versions qui fonctionnent de scintillanet avec windev et comment le faire fonctionner.
je partage donc mon expérience. Au final quand on sait c'est très simple :).


je suis en windev 22, je veux utilisé le composant scintillanet v2.5.2


lien de téléchargement : http://download-codeplex.sec.s-msft.com/Download/Release…

Il faut copier les dll : scintillanet.dll et SciLexer.dll dans le répertoire de l'éxécutable.
J'ai ajouté dans les assemblages .NET du projet la dll : scintillanet.dll
j'ai créé une fenêtre vierge dans laquelle j'ai placé un champ de type ".NET 2.0 (winform)" de windev , portant le nom : DOTNET_scintilla
Dans les propriétés générales du champ, il faut affecter la classe : Scintillanet.scintilla

Pour modifier le type de syntaxe du champ text :
DOTNET_scintilla.ConfigurationManager.Language="html"


Pour ajouter du text par programmation :
DOTNET_scintilla.text="épilogue"


Voila c'est très simple, mais j'ai un problème, avec les accents ! et je ne m'en sort pas.
je sais que c'est une histoire de conversion utf8, unicode, ansi

Mon problème est simple quand j'affecte "épilogue", l'accent est remplacé par d'autre caractère, dû à un problème de conversion.

Le composant scintillanet, contient des propriétés qui permet de paramétrer l'encodage du champ text, par exemple
DOTNET_scintilla.Encoding=Encoding.UTF8


De base le champs est paramétré avec Encoding.ASCII









j'ai utilisé des chaines unicode de windev, voici le code du bouton "set text" de mon exemple

MonBufferUnicode est une chaîne UNICODE = AnsiVersUnicode("épilogue",alphabetUTF8)

SAI_SansNom1+=[CR]+"Paramétrage initial du composant scintilla"+CR
SAI_SansNom1+=[CR]+"DOTNET_scintilla.Encoding.CodePage= "+DOTNET_scintilla.Encoding.CodePage
SAI_SansNom1+=[CR]+"DOTNET_scintilla.Encoding.EncodingName = "+DOTNET_scintilla.Encoding.EncodingName

SAI_SansNom1+=CR+CR+"Passage à l'encodage : utf8"
DOTNET_scintilla.Encoding=Encoding.UTF8


DOTNET_scintilla.AppendText(MonBufferUnicode )
SAI_SansNom1+=[CR]+"DOTNET_scintilla.Encoding.CodePage= "+DOTNET_scintilla.Encoding.CodePage
SAI_SansNom1+=[CR]+"DOTNET_scintilla.Encoding.EncodingName = "+DOTNET_scintilla.Encoding.EncodingName


DOTNET_scintilla.AppendText(CR+"épilogue" )
DOTNET_scintilla.AppendText(UTF8VersChaîne(CR+"épilogue") )


j'ai pas réussi à afficher correctement le mot "épilogue" dans le champ text.


Si quelqu'un à la solution, et je sais qu'elle est simple, je suis preneur.
J'ai pu voir sur le forum, des images de fenêtre embarquant ce composant, donc je sais que ça marche...
Posté le 07 décembre 2017 - 18:00
j'ai trouvé une autre solution, en passant par l'api

pour récupérer le texte:

SCI_GETTEXT est un entier=2182
SCI_GETTEXTLENGTH est un entier=2183

bufText est un Buffer

nDocumentLength is int = SendMessage( DOTNET_scintilla.Handle, SCI_GETTEXTLENGTH, 0, 0 )
bufText = Complete(bufText, nDocumentLength)
SendMessage( DOTNET_scintilla.Handle, SCI_GETTEXT, nDocumentLength + 1, &bufText )
sTr est une chaîne = bufText[[1 TO nDocumentLength]]

SAI_SansNom1+=[CR]+sTr


pour ajouter du texte:

SCI_APPENDTEXT est un entier = 2282
bufText est un Buffer = "éponge"
SendMessage( DOTNET_scintilla.Handle, SCI_APPENDTEXT, Length(bufText), &bufText )


mais si vous avez la réponse avec la méthode native du composant appenText() je suis preneur
Posté le 10 mai 2018 - 18:54
Hello,

merci pour le partage, le lien vers les dll est mort, tu aurais les fichiers par hasard ?

Excellente journée

Olivier
Membre enregistré
2 568 messages
Popularité : +222 (260 votes)
Posté le 11 mai 2018 - 07:26
Bonjour,

Ici peut-être https://github.com/jacobslusser/ScintillaNET

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Posté le 11 mai 2018 - 18:20
Bonjour,

merci pour le message , je me permets de mettre le lien vers un post qui semble résoudre tous mes soucis et les tiens également : je viens de tester avec les caractères accentués et çamarche.

https://www.developpez.net/forums/d1673746/environnements-developpement/windev/utilisation-d-activex/

En espérant que cela peut aider

Bonne journée