Syntax farvning

Tags:    visual-basic

Jeg har en RichtextBox og vil lave syntax farvning.

jeg har for så vidt også noget der virker , men den skriver alt på samme linje

<pre>
If ord = "<help>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord
rtb1.SelColor = Default_Color
end if
</pre>

Hvordan kan jeg omskrive dette eller lave en anden kode
der tager højde for mellerum og linieksift osv.

mvh.
Thomas Christensen
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41



10 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Jeg har en RichtextBox og vil lave syntax farvning.

jeg har for så vidt også noget der virker , men den skriver alt på samme linje

<pre>
If ord = "<help>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord
rtb1.SelColor = Default_Color
end if
</pre>

Hvordan kan jeg omskrive dette eller lave en anden kode
der tager højde for mellerum og linieksift osv.

mvh.
Thomas Christensen
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41



Jens

dim tmp as string 'sættes i efter option explicit

If ord = "<help>" Then 'rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord & vbCr ' "ny linie"
rtb1.SelColor = Default_Color

If ord = "<help>" Then goto afslut:

ElseIf ord = "<html>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord) '+ (i - 1)
rtb1.SelColor = RGB(0, 0, 255)
rtb1.SelText = ord
rtb1.SelColor = Default_Color
tjek = 5000
ElseIf ord = "<html>" Then goto afslut:

if tmp = "<help>" then rtb1,vbCr ' "ny linie"
----------------------------------------
Else
text = text & ord
End If
håber det hjælper hvis du kommer forbi ( end if )




Jeg har en RichtextBox og vil lave syntax farvning.

jeg har for så vidt også noget der virker , men den skriver alt på samme linje

<pre>
If ord = "<help>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord
rtb1.SelColor = Default_Color
end if
</pre>

Hvordan kan jeg omskrive dette eller lave en anden kode

der tager højde for mellerum og linieksift osv.

mvh.
Thomas Christensen
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41

Jens

Du kan bruge flg. vb functioner

1) vbCr = Carriage return "svarer til at du taster
på entertasten"

eks. list1 aditem rst!id & vbCr "ny linie"

2) & space(2)= mellemrums tasten 2 gange

eks. list1 aditem rst!id & space(2) & rst!test


mvh jens




Jeg har en RichtextBox og vil lave syntax farvning.

jeg har for så vidt også noget der virker , men den skriver alt på samme linje

<pre>
If ord = "<help>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord
rtb1.SelColor = Default_Color
end if
</pre>

Hvordan kan jeg omskrive dette eller lave en anden kode

der tager højde for mellerum og linieksift osv.

mvh.
Thomas Christensen
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41
Jens

Du kan bruge flg. vb functioner

1) vbCr = Carriage return "svarer til at du taster
på entertasten"

eks. list1 aditem rst!id & vbCr "ny linie"

2) & space(2)= mellemrums tasten 2 gange

eks. list1 aditem rst!id & space(2) & rst!test


mvh jens


Ja, det ved jeg man hvor skal jeg sætte det ind i denne kode
<pre>
Private Sub rtb1_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeySpace Or KeyAscii = vbKeyReturn Then
Call tjek
ord = ""
i = i + 1
ElseIf KeyAscii = 8 Then
i = i - 1
ord = Mid$(ord, 1, Len(ord) - 1)
Else

ord = ord & Chr$(KeyAscii)
i = i + 1
If tjek = 5000 Then
KeyAscii = 0
End If
End If
End Sub

Function tjek() As Integer
If ord = "<help>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord) '+ (i - 1)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord
rtb1.SelColor = Default_Color
ElseIf ord = "<html>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord) '+ (i - 1)
rtb1.SelColor = RGB(0, 0, 255)
rtb1.SelText = ord
rtb1.SelColor = Default_Color
tjek = 5000
ElseIf ord = "'" Then
If k = 0 Then
rtb1.SelColor = RGB(255, 0, 0)
k = 1
ElseIf k = 1 Then
rtb1.SelColor = Default_Color
k = 0
End If
Else
text = text & ord
End If
End Function
</pre>

Eller omskrive koden, eller lave en kode der fungere bedere end den?

Mvh.
Thomas Christensen
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41



Jeg har en RichtextBox og vil lave syntax farvning.

jeg har for så vidt også noget der virker , men den skriver alt på samme linje

<pre>
If ord = "<help>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord
rtb1.SelColor = Default_Color
end if
</pre>

Hvordan kan jeg omskrive dette eller lave en anden kode
der tager højde for mellerum og linieksift osv.

mvh.
Thomas Christensen
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41


Jens

Et skud fra hoften....


If ord = "<help>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord & vbCr ' "ny linie"
rtb1.SelColor = Default_Color

end if








Jeg har en RichtextBox og vil lave syntax farvning.

jeg har for så vidt også noget der virker , men den skriver alt på samme linje

<pre>
If ord = "<help>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord
rtb1.SelColor = Default_Color
end if
</pre>

Hvordan kan jeg omskrive dette eller lave en anden kode
der tager højde for mellerum og linieksift osv.

mvh.
Thomas Christensen
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41

Jens

Et skud fra hoften....


If ord = "<help>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord & vbCr ' "ny linie"
rtb1.SelColor = Default_Color

end if





Niks, det virker ikke så sker der det når jeg trykker på enter kommer der dobbetl linie og så flytter den det op igen?

-Thomas Christensen
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41



Jeg har en RichtextBox og vil lave syntax farvning.

jeg har for så vidt også noget der virker , men den skriver alt på samme linje

<pre>
If ord = "<help>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord
rtb1.SelColor = Default_Color
end if
</pre>

Hvordan kan jeg omskrive dette eller lave en anden kode
der tager højde for mellerum og linieksift osv.

mvh.
Thomas Christensen
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41

Jens

Et skud fra hoften....


If ord = "<help>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord & vbCr ' "ny linie"
rtb1.SelColor = Default_Color

end if





Niks, det virker ikke så sker der det når jeg trykker på enter kommer der dobbetl linie og så flytter den det op igen?

-Thomas Christensen
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41



Jeg har en RichtextBox og vil lave syntax farvning.

jeg har for så vidt også noget der virker , men den skriver alt på samme linje

<pre>
If ord = "<help>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord
rtb1.SelColor = Default_Color
end if
</pre>

Hvordan kan jeg omskrive dette eller lave en anden kode
der tager højde for mellerum og linieksift osv.

mvh.
Thomas Christensen
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41



Jens

dim tmp as string 'sættes i efter option explicit

If ord = "<help>" Then 'rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord & vbCr ' "ny linie"
rtb1.SelColor = Default_Color

If ord = "<help>" Then goto afslut:

ElseIf ord = "<html>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord) '+ (i - 1)
rtb1.SelColor = RGB(0, 0, 255)
rtb1.SelText = ord
rtb1.SelColor = Default_Color
tjek = 5000
ElseIf ord = "<html>" Then goto afslut:

if tmp = "<help>" then rtb1,vbCr ' "ny linie"
----------------------------------------
Else
text = text & ord
End If
håber det hjælper hvis du kommer forbi ( end if )




Jeg har en RichtextBox og vil lave syntax farvning.

jeg har for så vidt også noget der virker , men den skriver alt på samme linje

<pre>
If ord = "<help>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord
rtb1.SelColor = Default_Color
end if
</pre>

Hvordan kan jeg omskrive dette eller lave en anden kode
der tager højde for mellerum og linieksift osv.

mvh.
Thomas Christensen
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41


hej

dim tmp as string 'sættes i efter option explicit

If ord = "<help>" Then 'rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord & vbCr ' "ny linie"
rtb1.SelColor = Default_Color
tmp="ord"
If ord = "<help>" Then goto afslut:

ElseIf ord = "<html>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord) '+ (i - 1)
rtb1.SelColor = RGB(0, 0, 255)
rtb1.SelText = ord
rtb1.SelColor = Default_Color
tjek = 5000
tmp="ord"
if ord = "<html>" Then goto afslut:


Else
text = text & ord
afslut: if tmp <>"" then rtb1,vbCr
End If
håber det hjælper mvh jens




Jeg har en RichtextBox og vil lave syntax farvning.

jeg har for så vidt også noget der virker , men den skriver alt på samme linje

<pre>
If ord = "<help>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord
rtb1.SelColor = Default_Color
end if
</pre>

Hvordan kan jeg omskrive dette eller lave en anden kode
der tager højde for mellerum og linieksift osv.

mvh.
Thomas Christensen
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41


Jens

dim tmp as string 'sættes i efter option explicit

If ord = "<help>" Then 'rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord & vbCr ' "ny linie"
rtb1.SelColor = Default_Color

If ord = "<help>" Then goto afslut:

ElseIf ord = "<html>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord) '+ (i - 1)
rtb1.SelColor = RGB(0, 0, 255)
rtb1.SelText = ord
rtb1.SelColor = Default_Color
tjek = 5000
ElseIf ord = "<html>" Then goto afslut:

if tmp = "<help>" then rtb1,vbCr ' "ny linie"
----------------------------------------
Else
text = text & ord
End If
håber det hjælper hvis du kommer forbi ( end if )

Jeg kan ikke rigtigt fordet til at virke.

jeg har prøvet dette
<pre>
If ord = "<help>" Then 'rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord)
rtb1.SelColor = &HFF00&
rtb1.SelText = ord & vbCr ' "ny linie"
rtb1.SelColor = Default_Color

If ord = "<help>" Then goto afslut:

ElseIf ord = "<html>" Then
rtb1.SelStart = i - Len(ord)
rtb1.SelLength = Len(ord) '+ (i - 1)
rtb1.SelColor = RGB(0, 0, 255)
rtb1.SelText = ord
rtb1.SelColor = Default_Color
tjek = 5000
ElseIf ord = "<html>" Then goto afslut:

if tmp = "<help>" then rtb1,vbCr ' "ny linie"
----------------------------------------
Else
text = text & ord

</pre>

det virkede ikek så prøve jeg dette

<pre>
If ord = "<help>" Then
GoTo afslut:

ElseIf ord = "<html>" Then

GoTo afslut:

If tmp = "<help>" Then
rtb1 , vbCr ' "ny linie"
'----------------------------------------
Else
text = text & ord
End If
End If

</pre>

jeg kan ikke rigtigt finde ud hvor du vil have jeg skal placere det
desuden siger den om flg. lnnie
<pre>
rtb1. , vbCr ' "ny linie"
</pr>
Invalid Use of property.

jeg ahr også prøvet en ande kode
<pre>

Private Sub RTB1_KeyPress(KeyAscii As Integer)
If Syntax(RTB1.Text) = 5000 Then
KeyAscii = 0
End If
End Sub
</pre>
funktion Syntax
<pre>
Function Syntax(Word As String) As Integer

Ord = InStr(1, LCase$(Form1.RTB1.Text), "input()")

If Ord <> 0 Then
start = Ord - 1
slut = Len("input()") - 1
Form1.RTB1.SelStart = Ord - 1
Form1.RTB1.SelLength = Len(Ord)
Form1.RTB1.SelColor = Commando_Color
Form1.RTB1.SelText = UCase$("input()")
Form1.RTB1.SelText = Left(Form1.RTB1.Text, Form1.RTB1.SelStart) & Ord & Mid(Form1.RTB1.Text, Form1.RTB1.SelStart + Form1.RTB1.SelLength + 1)
Form1.RTB1.SelColor = Default_Color
End Function
</pre>

Men den virker ikke rigtigt, den skrive det kommandoe i gen og igen.

Så hvordan kan jeg skrive en af disse to koder om, så de virker og tag højde for mellerum eller lave en trejide der virker?

-Thomas
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41



Jeg fandt selv noget brugbart

<pre>
Set re = New regexp 'en variable type der ligge i referencen
'microsoft VBScript Regular Expresion 5.5
re.Global = True
strinput = LCase(Form1.Text1.Text) 'tekst der skal søges igennem
re.IgnoreCase = True 'ingnore case


re.Pattern = "if" 'søgningen ord

Set objMatches = re.Execute(strinput) 'søgningen

For Each objMatch In objMatches 'tjek resulatat
Form1.Text1.SelStart = objMatch.FirstIndex 'ændre
Form1.Text1.SelLength = Len("if") 'ændre
Form1.Text1.SelColor = RGB(0, 255, 0) 'ændre farve
Form1.Text1.SelText = UCase("if") 'ændre
Form1.Text1.SelColor = RGB(0, 0, 0) 'standartfarve
Next
</pre>

Mhv.
Thomas Christensen
-------------------------------------------------------
Visual Basic noget for dig?
tjek Visual Basic-Gruppen
http://www.udvikleren.dk/groups/?gid=41



t