Как подкрасить синтаксис при написании программ в RTB? - VB

Узнай цену своей работы

Формулировка задачи:

Всем доброго дня !!! Господа кто занимался создания собственных редакторов программ отзовитесь !!! Вопрос. Как подкрасить синтах при написания программ в RTB (имеется введу отдельные кусочки текста: функции, команды) То что нашел на некоторых сайтах не подходит. Если есть опыт поделитесь пожалуйста. Спасибо.

Решение задачи: «Как подкрасить синтаксис при написании программ в RTB?»

textual
Листинг программы
'Àâòîð ïðèìåðГ* Áåëÿåâ Г„Г*Г*ГЁГ«Г* <outen@mail.ru>
Option Explicit
Private Declare Function LockWindowUpdate Lib 'user32' (ByVal hwndLock As Long) As Long
Dim lngPos As Long, strRight As String, strLeft As String, arrWords() As String, lngIndex As Long
Private Const strWords As String = 'New RaiseEvent AddressOf Type Compare Alias Lib Call Do Preserve Redim Erase ' + _
'Global Byte Base On Error Resume GoTo Until Open Input Output Random Binary Access Read Write Put Close Stop Set ' + _
'Is Nothing Property Let Get ElseIf Null And Or If Then Sub Declare Function Option Dim As End Loop Private Public ' + _
'While Not Wend Next Explicit LBound UBound Const Static True False String Boolean Integer Long Single Currency ' + _
'Select Case With Else ByVal For Mod Xor Imp To Module'
Private Sub mnuShow_Click()
    arrWords = Split(strWords, ' ')
    LockWindowUpdate txtMain.hWnd
    txtMain.SelStart = 0
    txtMain.SelLength = Len(txtMain.Text)
    txtMain.SelColor = vbBlack
    For lngIndex = LBound(arrWords) To UBound(arrWords)
        While Not InStr(lngPos, LCase(txtMain.Text), LCase(arrWords(lngIndex))) = 0
            lngPos = InStr(lngPos, LCase(txtMain.Text), LCase(arrWords(lngIndex)))
            txtMain.SelStart = lngPos - 1
            txtMain.SelLength = Len(arrWords(lngIndex))
            strRight = Mid(txtMain.Text, lngPos + Len(arrWords(lngIndex)), 1)
            If lngPos = 1 Then strLeft = ' ' Else strLeft = Mid(txtMain.Text, lngPos, 1)
            If (strRight = ' ' Or strRight = ',' Or strRight = '' Or strRight = '(' Or strRight = Chr(13)) Or (strLeft = ' ' Or strLeft = '' Or strLeft = Chr(32)) Then txtMain.SelColor = &H800000: txtMain.SelText = arrWords(lngIndex)
            lngPos = lngPos + 1
        Wend
        lngPos = 1
    Next
    lngPos = 1
    While Not InStr(lngPos, txtMain.Text, ''') = 0
        On Error Resume Next
        lngPos = InStr(lngPos, txtMain.Text, ''')
        txtMain.SelStart = lngPos - 1
        If Not InStr(lngPos, txtMain.Text, vbCrLf) = 0 Then txtMain.SelLength = InStr(lngPos, txtMain.Text, vbCrLf) - lngPos Else txtMain.SelLength = Len(txtMain.Text)
        If lngPos = 1 Then strLeft = ' ' Else strLeft = Mid(txtMain.Text, lngPos - 1, 1)
        If Not strLeft = Chr(34) Then txtMain.SelColor = &H8000&
        lngPos = lngPos + 1
    Wend
    txtMain.SelStart = 0
    LockWindowUpdate 0
End Sub
Private Sub Form_Load()
    lngPos = 1
    txtMain.RightMargin = 100000
End Sub
Private Sub Form_Resize()
    txtMain.Move 0, 0, ScaleWidth, ScaleHeight
End Sub
Private Sub txtMain_KeyPress(KeyAscii As Integer)
    txtMain.SelColor = vbBlack
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы