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
26 mai 2005 à 14:49
25 janv. 2005 à 19:17
merci. je me réjouis de voir le résultat.
25 janv. 2005 à 18:49
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!
2 janv. 2005 à 08:03
Au passage, comment on lie un formulaire Html avec une database pour stocker les Infos saisient ?
25 oct. 2004 à 17:23
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.