Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Help su Higlight
Forum - C# / VB.NET - Help su Higlight

Avatar
Thejsuter (Normal User)
Rookie


Messaggi: 27
Iscritto: 12/04/2008

Segnala al moderatore
Postato alle 18:04
Sabato, 12/04/2008
Salve a tutti

Avrei un piccolo problemino che non riesco a capire
come risolvero spero che qualcuno puo aiutarmi
a farlo funzionare

Si tratta di un Higlight

Presente quando premete il pulsante a sinistra code
e vi colora gli IF le stringe ecc. ecc.

Siccome sto realizzando un Compilatore su vb.net

e indispensabile questa fuzione ho provato in questo modo


Codice sorgente - presumibilmente VB.NET

  1. script = RichTextbox.text
  2.  
  3. try
  4.  
  5.   Script.find("if")
  6. script.selectionColor = Color.blue
  7.  
  8.  
  9. catch
  10. end try




Ma l'istrunzione non lavora.

Appena dopo il primo carattere che si scrive
comincia a colorare tutto il testo di blu senza fermarsi

Potete aiutarmi? Grazie mille.

PM Quote
Avatar
Dark_Limit (Ex-Member)
Expert


Messaggi: 220
Iscritto: 15/01/2008

Segnala al moderatore
Postato alle 20:36
Sabato, 12/04/2008
Ciao...Hai provato con un Focus sulla parte che hai selezionato?

PM Quote
Avatar
Thejsuter (Normal User)
Rookie


Messaggi: 27
Iscritto: 12/04/2008

Segnala al moderatore
Postato alle 0:49
Domenica, 13/04/2008
Sinceramente no,

Per caso non potresti illustrarmi anche un piccolo suggerimento su come fare?

Te ne sarei molto grato

thx in anticipo

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:04
Domenica, 13/04/2008
Puoi trovare diversi modi di highlitghting sul mio sito:
http://totem.altervista.org/guida/versione2/B21.php
(Questo era per html...)
E anche qua ci sono dei codici, ad esempio il mio programma Code Converter (che puoi trovare nella sezione sorgenti vb.net) colora i sorgenti e li trasforma in file "di testo" elaborati (rtf, html, html+css). Puoi vedere il codice che serve a colorare e usarlo su una riga alla volta: è quasi impeccabile (usa le espressioni regolari).
E poi un buon codice che avevo trovato e riadattato, questa è la forma originale:
http://pietschsoft.com/Blog/Post.aspx?PostID=491

PM Quote
Avatar
Thejsuter (Normal User)
Rookie


Messaggi: 27
Iscritto: 12/04/2008

Segnala al moderatore
Postato alle 16:55
Domenica, 13/04/2008
Ciao totem complimenti per i tuoi lavori
veramente ben fatti

Tornando al Higlight

credo di aver capito qualcosa

ma ho solo un problema in questa espressione

Codice sorgente - presumibilmente VB.NET

  1. For Each Word As String In *Words*
  2.             I = FirstCharIndex
  3.             Do
  4.                 I = Me.Find(Word, I, I + Me.Lines(LineIndex).Length, _
  5.                     RichTextBoxFinds.None)
  6.                 If I >= 0 Then
  7.                     Me.SelectionStart = I
  8.                     Me.SelectionLength = Word.Length
  9.                     'Qui utilizo un dictionary
  10.                     Me.SelectionColor = Words(Word)
  11.                     I += Word.Length
  12.                 End If
  13.             Loop While I >= 0
  14.         Next



e un errore del tipo qui

For Each Word As String In *Words*
Fa un refierimento ad un membro non condiviso
Richiede un riferimento a un oggetto

Prima mi dava un errore che il membro Words non era disponibile perche era Private.

Lo modificiato il Public

e mi da quest'errore adesso

e risolvibile?

PS:
Nei source non ho trovato un programma tipo
rtb che abbia un higlight interno altrimenti non disturbavo 8-|

Ultima modifica effettuata da Thejsuter il 13/04/2008 alle 17:00
PM Quote
Avatar
Thejsuter (Normal User)
Rookie


Messaggi: 27
Iscritto: 12/04/2008

Segnala al moderatore
Postato alle 18:08
Domenica, 13/04/2008
Scusate il doppio post ma ho fatto una cosa del genere

Codice sorgente - presumibilmente Delphi

  1. Dim cerca = "if"
  2.         If LastValidIndex < script.TextLength - 1 Then
  3.             Dim Index = script.Find("if", LastValidIndex + 1, RichTextBoxFinds.None)
  4.             If Index > -1 Then
  5.                 LastValidIndex = Index
  6.                 script.Select(Index, cerca.Length)
  7.                 script.SelectionColor = Color.Blue
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.             Else
  17.  
  18.             End If
  19.         Else




C'e solo un problema qui
dovre fare in modo che il cursore si riposizioni alla fine di quella righa come e possibile farlo?

Ultima modifica effettuata da Thejsuter il 13/04/2008 alle 18:10
PM Quote