PDA

Visualizza la versione completa : [VB] HTML Highlighting


nikoèstancoehasonno
21-05-2002, 00:15
Ciao a tutti :)

Ho cercato questo argomento sul forum ma non ho trovato nulla di significativo.
Sto cercando di fare un .exe con un campo di testo in cui l'utente possa semplicemente scrivere un testo e veder evidenziati i tag HTML.

Ho trovato su internet questo codice:


Private Sub rtf1_Click()
On Error Resume Next
Dim tmptxt As String
Dim regexTagname As RegExp, regexProp As RegExp
Dim matches As MatchCollection
Dim match As match
ListView1.ListItems.Clear
'first, lets see if we are in a tag
Dim OtagSP As Long
Dim OtagLength As Long
OtagSP = InStrRev(rtf1.Text, "<", rtf1.SelStart, vbTextCompare)
If InStrRev(rtf1.Text, ">", rtf1.SelStart, vbTextCompare) > OtagSP Then
ListView1.ListItems.Add , "tagname", "Text"
ListView1.ListItems("tagname").ListSubItems.Add , "value", "No tag selected"
Exit Sub
End If
OtagLength = InStr(rtf1.SelStart, rtf1.Text, ">", vbTextCompare) - OtagSP + 1

tmptxt = Mid(rtf1.Text, OtagSP, OtagLength)

' lets get the tag name real quick
' Regx to get tag name
Set regexTagname = New RegExp
regexTagname.Pattern = "[/]?\w[^ =<>]*"
regexTagname.IgnoreCase = False
regexTagname.Global = False
Set matches = regexTagname.Execute(tmptxt) ' Execute search.
ListView1.ListItems.Add , matches.Item(0), matches.Item(0)

' define regx to get tag name / attributes
' Regx to get properties/values
Set regexProp = New RegExp
regexProp.Pattern = "\s(\w[\w\d\s:_\-\.]*)\s*=\s*(""[^""]+""|'[^']+'|\d+)"
regexProp.IgnoreCase = False
regexProp.Global = True

Set matches = regexProp.Execute(tmptxt) ' Execute search.
For Each match In matches ' Iterate Matches collection.
ListView1.ListItems.Add , match.SubMatches(0), match.SubMatches(0)
ListView1.ListItems(match.SubMatches(0)).ListSubIt ems.Add , "value", match.SubMatches(1)
Next

End Sub

Private Sub rtf1_KeyUp(KeyCode As Integer, Shift As Integer)
On Error Resume Next
If chkHighlight < 1 Then Exit Sub
Debug.Print KeyCode & "shift=" & Shift
'If Shift > 0 Then Exit Sub
Select Case KeyCode
Case 188 ' <
Case 190 '>
Case 32 ' space
Case 187 '=
Case 222 ' "
Case 49 '!
Case Else
Exit Sub
End Select


'first, lets see if we are in a tag
LockWindowUpdate rtf1.hWnd
Dim OtagSP As Long
Dim OtagLength As Long
Dim ss As Long
Dim sl As Long
ss = rtf1.SelStart
sl = rtf1.SelLength
OtagSP = InStrRev(rtf1.Text, "<", rtf1.SelStart, vbTextCompare)
OtagLength = InStr(rtf1.SelStart, rtf1.Text, ">", vbTextCompare) - OtagSP + 1


rtf1.SelStart = OtagSP - 1
rtf1.SelLength = OtagLength + 1
rtf1.SelRTF = colorhtml(rtf1.SelText)
rtf1.SelStart = ss
rtf1.SelLength = sl
LockWindowUpdate False

End Sub





Ho creato un form e ci ho messo un textbox che ho chiamato RichTextBox1, come credo sia necessario fare. Ho cliccato fuori dal textbox, sul form, e ho incollato esattamente il codice qui sopra.

Se lo provo però mi da errore, parla di funzioni non definite.
Premettendo che non sono alle prime armi, sto proprio alla fionda e alla cerbottana, qualcuno puo' spiegarmi il motivo?

Grazie :)
Ciao

ans
21-05-2002, 01:06
Devi utilizzare non la textbox ma la richtextbox, il componente lo aggiungi dalla voce componenti e lo trovi sotto la voce microsoft richtextbox.

nikoèstancoehasonno
21-05-2002, 17:40
:(


Ho provato a mettere un RichtextBox e il programma funziona, solo che non fa nessun highlighting. Non son capace nemmeno a fare un copy/paste :quipy:

Puo' darsi che il codice sopra sia errato?

E scusate. in breve che differenza passa tra textbox e richtexbox? Ho notato che sul richtextbox il tasto dx del mouse e' disabilitato...

Grazie e ciao

Vlad Tepes
21-05-2002, 17:42
uhm... se per te è lo stesso editor simili ce ne sono a iosa di già fatti...

TextPad (http://www.textpad.com)
UltraEdit (http://www.ultraedit.com)

nikoèstancoehasonno
21-05-2002, 17:48
:)

Grazie molte, ma il fatto è che sto cercando di capire come funziona VB e credo che il modo migliore per rompere il ghiaccio sia smanettarci sopra... volevo assemblare vari pezzi di codice per provare a fare un programma

Ciao

nikoèstancoehasonno
21-05-2002, 18:22
Sono riuscito a farlo andare... credo mancassero delle variabili da dichiarare o qualcosa di simile :)


Ciao

lucasp
22-05-2002, 18:50
per piaciere, mi manderesti( webmaster@lucascript.net ) in uno .zip il .exe e i sorgenti se nn ti disturba??????

Grazie per una tua eventuale risposta:D

P.S: per i curiosi, è solo per vedere se il VB è na cazzata come dicono:rolleyes:

Loading