Editeur/ide pour vbscript (avec coloration du texte)

Soyez le premier à donner votre avis sur cette source.

Vue 18 548 fois - Téléchargée 1 774 fois

Description

Description:
Il s'agit d'une IDE de pour VBScript.

Fonctions intégrées:
- Coloration du texte (les couleurs peuvent être définies par l'utilisateur)
- Ouvrir/Enregistrer des fichiers (tous les types sont possibles)
- Undo / Redo (cette classe n'est pas de moi)
- Exécution du scripte
- Exécution "pas à pas"
- Affichage de valeurs espions (seulement en mode "pas à pas")
- Commenter le texte sélectionné (dé-commenter)
- Fonctions de recherche (très similaire à NotePad)
- Impression du texte affiché

Particularités:
L'appli crée le type de fichier ".script" et se l'associe.
Cette option a été implémentée pour la raison suivante: lorsqu'on exécute un fichier .vbs, aucune information concernant le processus en cours n'est affichée à l'écran. L'exécution d'un fichier .script , en revanche, est affichée à l'écran.

Les défauts connus:
- Le traitement de la coloration du texte est assez lente. (50 lignes de code sont colorées très rapidement, mais 1000 lignes de code rendent l'appli inutilisable).
- Lors de l'exécution "pas à pas" il est pour l'instant impossible d'exécuter les boucles ou les débuts de procédures (par exemple: For… Next, Do…Loop, Sub… End Sub). Cette limitation vient fait que l'exécution "pas à pas" se fait par la méthode "ExecuteStatement" du contrôle ScriptControl. Cette méthode ne peut exécuter qu'une ligne "autonome" en soit (par exemple: If I = 1 Then MsgBox "Hello").
- La fonction Espions n'est de loin pas aussi performante que celle connue sous VB6 ou VBA, mais elle offre une alternative acceptable dans l'environnement VBS.

Les codes qui ne sont pas de moi:
- La classe clsUndo,
- L'idée originale de la procédure de colorisation du code,
- L'idée originale du contrôle utilisateur SplitPanel.
Les auteurs / sources des codes originaux qui ne sont pas de moi sont cités dans la source.

Divers:
Syntaxe du texte RTF: http://www.biblioscape.com/rtf15_spec.htm

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
24
Date d'inscription
lundi 15 décembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

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
Messages postés
117
Date d'inscription
mercredi 3 décembre 2003
Statut
Membre
Dernière intervention
11 octobre 2007
1
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.
Messages postés
1
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
25 janvier 2005

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!
Messages postés
13
Date d'inscription
samedi 25 décembre 2004
Statut
Membre
Dernière intervention
11 avril 2005

Evidemament !

Au passage, comment on lie un formulaire Html avec une database pour stocker les Infos saisient ?
Messages postés
345
Date d'inscription
jeudi 2 septembre 2004
Statut
Membre
Dernière intervention
25 octobre 2007

baah du VBasic
Afficher les 20 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.