Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Coloration syntaxique avec RE ( début ) Sam 1 Mar 2014 - 20:58 | |
| Un petit début de la coloration syntaxique dans un RE (RichEdit) - Code:
-
dim RE%,Change%,res%,pos%,code% ,mot$,x%,base$,in_liste%,item$,sep%,sep$,temp% dim mot2$,dep%,coul%,police$ police$="arial" sep$="," coul%=(255*0+0)*256+0 label change,temps
height 0,500 width 0,600 dll_on "KGF.dll"
Edit 1 :top 1,5 : left 1,5 : on_change 1,change
RE% = dll_call2("RichEditCreateWithEvent",handle(0),handle(1)) res% = dll_call5("RichEditGeometry",RE%,5,30,500,200) res% = dll_call3("RichEditFunction",RE%,5,adr(police$)) res% = dll_call2("RichEditGetInformation",RE%,3) res% = dll_call3("RichEditFunction",RE%,11,0)
memo 2 :top 2,235 :left 2,5 : height 2,220 : width 2,200 : bar_vertical 2 dlist 3 :file_load 3,"C:\Users\Yannick\Desktop\Essai coloration syntaxique sur re\KeyWordList.inf" for x%=1 to count(3) item$=item_read$(3,x%): sep%=instr(item$,":"):item$=trim$(left$(item$,sep%-1)) base$=base$+item$+sep$ next x% timer 4 :timer_off 4:timer_interval 4,1 : on_timer 4,temps end
temps: temp%=temp%+1 return
Change: timer_on 4 off_change 1 pos% = dll_call2("RichEditGetInformation",RE%,3) if pos%>1 res% = dll_call3("SelectRichEditText",RE%,pos%-1,0) code% = dll_call2("RichEditGetInformation",RE%,5) if scancode = 8 :' retour if len(mot$)>0 mot$=left$(mot$,len(mot$)-1) else if code%<>32 mot$=mot2$ end_if end_if caption 0,mot$ else if code% <>32 :' espace mot$=mot$+chr$(code%) mot$=upper$(mot$) else in_liste% =dll_call3("ItemIndexInString",adr(base$),adr(sep$),adr(mot$))
if in_liste% >0 item_add 2,mot$+" est dans la liste" dep%=pos%-(len(mot$)+1) res% = dll_call3("SelectRichEditText",RE%,dep%,len(mot$)) res% = dll_call3("RichEditFunction",RE%,7,coul%) mot2$=mot$ mot$="" else item_add 2,mot$ mot2$=mot$ mot$="" end_if end_if end_if res% = dll_call3("SelectRichEditText",RE%,pos%,0) res% = dll_call3("RichEditFunction",RE%,7,0) end_if timer_off 4 caption 0,str$(temp%):temp%=0 on_change 1,change return Attention ! ce n' est que le début, une ébauche, un brouillon... ...enfin il y a quelques bugs parcequ' ils ne sont pas encore traités | |
|
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| |
Klaus
Nombre de messages : 12295 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Coloration syntaxique avec RE ( début ) Lun 3 Mar 2014 - 0:23 | |
| Légère galère pour tester, mais j'ai compris qu'il fallait créer le fichier KeyWordList.inf. Je ne connais pas sa structure, mais avec - Citation :
- IF:aaa
FOR:bbb NEXT:ccc le programme s'exécute ans erreur. En tapant du texte, il reconnait bien la présence de ces 3 mots et le signale dans la bande log (très bien, ça !). Mais, je ne vois pas de coloriation. | |
|
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 3 Mar 2014 - 3:41 | |
| J' ai un peu modifié ma facon de faire. Les "if" sont gentils mais au bout d' une dizaine... ...une chatte n' y retrouve plus ses petits. Il va falloir que je modifie aussi ma liste de mots clef. une def pour un mot clef Panoramic : Edit N : xxxxxxxxxxxxxxxxxxx le mot clef est "Edit" donc je pense que le fichier sera structuré ainsi Edit : {Edit N} xxxxxxxxxxxxx pour que l' on voit dans les commentaires que le mot clef a un attribut mais que je puisse facilement le détacher de la chaine de caractères. Enfin, c' est de la tambouille interne Mais,...cela montre que c' est possible. | |
|
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re: Coloration syntaxique avec RE ( début ) Lun 3 Mar 2014 - 5:16 | |
| Je me suis plante dans la valeur de coul% dans le code exemple.... | |
|
Klaus
Nombre de messages : 12295 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Coloration syntaxique avec RE ( début ) Lun 3 Mar 2014 - 10:48 | |
| En fait, la coloration semble bien marcher ! Comme je suis daltonien, j'ai eu du mal à repérer le changement de couleur. Mais, en mettant une autre valeur dans la variable coul%, je constate que c'est bel et bien appliqué. Très bien ! Une petite remarque: Je n'ai pas bien compris la structure des lignes de ce fameux fichier texte avec les mots-clé. Est-ce: mot-cle : commentaire ou est-ce que ce qui suit le ":" a une fonction ? Suggestion: As-tu envisagé de coder la couleur dans le texte qui suit le ":", ou tout au moins une indication du type de mot-clé, de sorte à avoir, en plus, dans le fichier des lignes du genre: - Citation :
- V=variables_système=R,G,B
F=fonctiions=R,G,B P=procédures=R,G,R O=objets=R,G,B A=attributs=R,G,B ... number_click:V,... sin=F,... O=memo,... A=width,... | |
|
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 3 Mar 2014 - 13:13 | |
| Pour PPE2_2
on a :
couleur de chaine couleur de commentaire couleur de variables couleur de labels couleur de procédure couleur de mot clef Panoramic
j' envisage une couleur propriétaire pour les opérateurs ()+-*/
Pour cela il y a plusieurs listes il suffit de faire une vérif dans les listes par ordre de priorité
Le fichier que tu cites en exemple est celui des mots clef Panoramic que j' ai pompé sur le net. Il faut le retravailler.
dans ce fichier, la structure est :
Mot clef : Commentaire
Regardes le dernier PPE2_2 il est à jour. Tout n' est pas encore parfais mais cela prend forme. Le plus dur à gérer, c' est la liste des procédures utilisateur faites uniquement pour un projet et que l' on récupère au chargement d' un projet...il faut que je réfléchisse un peu...
Pour les mots clef Panoramic, il faut les dépouiller de tout attribut.
ex :
Text$(N) devient Text$(
Edit N doit devenir Edit
J' ai encore un peu de travail la dessus.
La coloration syntaxique de PPE2_2 est dans COL2.bas | |
|
Contenu sponsorisé
| Sujet: Re: Coloration syntaxique avec RE ( début ) | |
| |
|