EDITEUR/IDE POUR VBSCRIPT (AVEC COLORATION DU TEXTE)

spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006 - 15 oct. 2004 à 16:33
 Utilisateur anonyme - 26 mai 2005 à 14:49
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26862-editeur-ide-pour-vbscript-avec-coloration-du-texte

Utilisateur anonyme
26 mai 2005 à 14:49
Bonjour dragon, ton ide me plait beaucoup car je code enorme en vbs ( faut dire que c'est vraiment un language simple a utiliser et tres complet) mon souci et que je n'est pas de compilateur pour compiler ton ide, tu pourais par hazard me metre a dispo un exe ou un zip de ton ide ? se serait sympas de ta part. merci
philheiz Messages postés 117 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 11 octobre 2007 1
25 janv. 2005 à 19:17
cool ! je vais implémenter ca dés que possible et je mettrai à jour aussitôt.

merci. je me réjouis de voir le résultat.
chevalierdas Messages postés 1 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 25 janvier 2005
25 janv. 2005 à 18:49
Code très intéressant notamment sur la partie formatage. J'ai quelques suggestions:
1) Ne traiter que la partie visible grâces aux fonctions suivantes:
*****************
' Edit Control Messages
Public Const EM_GETLINECOUNT = &HBA
Public Const EM_LINEINDEX = &HBB
Public Const EM_LINELENGTH = &HC1
Public Const EM_GETFIRSTVISIBLELINE = &HCE
Public Const EM_POSFROMCHAR = &HD6
Public Const EM_CHARFROMPOS& = &HD7
Public Const EM_EXLINEFROMCHAR = (WM_USER + 54)

Public Function GetLineIndex(ByVal RTFControl As Control, ByVal line As Long) _
As Long
GetLineIndex = SendMessage(RTFControl.hwnd, EM_LINEINDEX, ByVal line, ByVal _
0&)
End Function

Public Function GetLineLength(ByVal RTFControl As Control, ByVal CharPos As _
Long) As Long
GetLineLength = SendMessage(RTFControl.hwnd, EM_LINELENGTH, ByVal CharPos, _
ByVal 0&)
End Function

Public Function GetLineCount(ByVal RTFControl As Control) As Long
GetLineCount = SendMessage(RTFControl.hwnd, EM_GETLINECOUNT, ByVal 0&, _
ByVal 0&)
End Function

Public Function GetFirstVisibleLine(ByVal RTFControl As Control) As Long
GetFirstVisibleLine = SendMessage(RTFControl.hwnd, EM_GETFIRSTVISIBLELINE, _
ByVal 0&, ByVal 0&)
End Function

Public Function Getposfromchar(ByVal RTFControl As Control, ByVal CharPos As _
Long) As POINTAPI
Dim WP As POINTAPI
Call SendMessage(RTFControl.hwnd, EM_POSFROMCHAR, WP, ByVal CharPos)
Getposfromchar = WP
End Function

Public Function GetLastVisibleLine(ORTB As RichTextBox, Optional FirstVisible _
As Long = -1) As Long

Dim R As RECT
Dim P As POINTAPI
Dim I As Long
Dim C As Long
Dim CH As Long

If Len(FirstVisible) = -1 Then
FirstVisible = GetFirstVisibleLine(ORTB)
End If

C = GetLineCount(ORTB)
If C > 1 Then
R = GetRect(ORTB)
R.Bottom = (ORTB.Height \ Screen.TwipsPerPixelY) - 6
CH = GetCharHeight(ORTB)
For I = FirstVisible To C - 1
P = GetPosFromLineIndex(ORTB, I)
If (P.Y) > (R.Bottom - CH) Then
GetLastVisibleLine = I - 1
If GetLastVisibleLine < 0 Then GetLastVisibleLine = 0
Exit Function
End If
Next I
End If

GetLastVisibleLine = I - 1

End Function

Public Function GetNumVisibleLines(ORTB As RichTextBox) As Long
Dim FL As Long
FL = GetFirstVisibleLine(ORTB)
GetNumVisibleLines = (GetLastVisibleLine(ORTB, FL) - FL) + 1
End Function

Public Function GetPosFromLineIndex(ORTB As RichTextBox, ByVal line As Long) As _
POINTAPI

Dim FirstChar As Long
FirstChar = GetLineIndex(ORTB, line)
GetPosFromLineIndex = Getposfromchar(ORTB, FirstChar)

End Function
*****************
2) Pour formater ligne à ligne, rechercher les \par du .TextRTF correspondant au vbcrlf du .text et ne construire (formater que cette partie là)
3) Utiliser des expressions régulières pour trouver les mots à colorier
4) Utiliser une recherche dichotomique pour trouver les keywords sur un tableau initialisé ailleurs

Bravo pour l'ensemble!
cs_Labuzz Messages postés 13 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 11 avril 2005
2 janv. 2005 à 08:03
Evidemament !

Au passage, comment on lie un formulaire Html avec une database pour stocker les Infos saisient ?
bibi_81 Messages postés 345 Date d'inscription jeudi 2 septembre 2004 Statut Membre Dernière intervention 25 octobre 2007 1
25 oct. 2004 à 17:23
baah du VBasic
philheiz Messages postés 117 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 11 octobre 2007 1
25 oct. 2004 à 13:21
bibi: tu voudrais apprendre à faire quoi exactement?
bibi_81 Messages postés 345 Date d'inscription jeudi 2 septembre 2004 Statut Membre Dernière intervention 25 octobre 2007 1
24 oct. 2004 à 17:04
comment sa marche ? et avec logi je suis sous Windows et je ne sais pas faire ce genre de truc je voudrais apprendre je ne sais pas trop où me renseigner...
philheiz Messages postés 117 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 11 octobre 2007 1
19 oct. 2004 à 20:18
ok pour les classes.
pour ceux, qui comme moi, ne connaissaient pas:
http://msdn.microsoft.com/library/en-us/script56/html/vsobjclass.asp
philheiz Messages postés 117 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 11 octobre 2007 1
19 oct. 2004 à 20:02
je vois ce que tu veux dire. A mon avis c'est tout à fait faisable; je vais me pencher sur la question.
Concernant les classes: je ne vois pas très bien comment en faire en VBS. si tu avais un exemple, ca aiderait.
Dragonmaster Messages postés 126 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 3 avril 2009
19 oct. 2004 à 17:57
cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 4 décembre 2008
18 oct. 2004 à 22:00
Ton control m'interresse bcp ;-)
Tu pourrais pas le mettre sur vbfrance stp ?
cs_Kelpan Messages postés 70 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 17 septembre 2006
18 oct. 2004 à 21:43
Pas mal du tout.

J'avais commencé un outil semblable pour un projet professionnel, mais en recréant un control de gestion de texte.

J'étais arrivé aussi à ce fameux problème de lenteur. J'ai résolu ce problème en ne gérant les couleurs que sur le texte affiché. Avec mon control, c'était faisable, avec un rtb ...

Bon courage ;-)
philheiz Messages postés 117 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 11 octobre 2007 1
16 oct. 2004 à 21:00
dragon: ce serait cool que tu précises. je suis ouvert à toute suggestion et prêt à modifier ce qui doit l'être.
mais je ne pige pas ce que signifie 'détécter les fonction, les classes et les sub'.
a+
Dragonmaster Messages postés 126 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 3 avril 2009
16 oct. 2004 à 17:14
Bien sur que si qu'il ya des classes en vbs !
cs_clementpat Messages postés 406 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 25 janvier 2014
16 oct. 2004 à 15:22
Un gros travail bien realisé .
cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 4 décembre 2008
15 oct. 2004 à 23:32
Ya un truc que j'aime pas , c'est ta methode de colorisations... C franchement lent que le code est long ... Perso j'ai jamais reussis a faire mieu :-P mais je pense qu'une colorisation seulement de la ligne qui change , serais bcp plus rapide que de refaire tt le text a chaque fois...
philheiz Messages postés 117 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 11 octobre 2007 1
15 oct. 2004 à 22:33
je ne suis pas sûr de te comprendre dragon: détécter quoi exactement ? les mots-clé Sub et Function sont reconnus, et dans VBS il n'y a pas de classes.
Dragonmaster Messages postés 126 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 3 avril 2009
15 oct. 2004 à 21:47
Une petite sgg: Détecter les fonction, les classes et *es sub .
Dragonmaster Messages postés 126 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 3 avril 2009
15 oct. 2004 à 21:46
C'est bien pensé ;)
spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006
15 oct. 2004 à 16:33
Franchement pas mal !
Rejoignez-nous