Newsgroup: it.comp.lang.visual-basic
Titolo: Elenci puntati e parsing su RichTextBox

Ho la necessità di implementare un editor simile all'editor del codice di
VB.
Nello specifico l'editor deve avere queste caratteristiche:
1) presentare il numero di riga affianco al codice.
2) fare il parsing del codice scritto per capire se è un comando e quindi
evidenziarlo
   con un colore diverso.
3) indentare automaticamente in caso di strutture tipo If, For, etc etc.
Non mi interessa vedere parametri di funzioni, o sintassi dei comandi in
tooltips.
Sto utilizzando un controllo richtext per realizzare la cosa.
Riesco a determinare la riga su cui è posizionato il cursore ma non mi aiuta
molto.
L'ideale per risolvere il primo punto sarebbe realizzare un elenco numerato.
I punti 2 e 3 sono molto simili, visto che il parsing del testo scritto mi
permetterebbe di
determinare sia i comandi inseriti sia se indentare o meno il codice
successivo.
Qualcuno sa come risolvere almeno il primo punto? Per il secondo posso
ancora inventarmi
qualcosa, ma il primo proprio non ho idea di come realizzarlo.
Grazie anticipatamente per eventuali risposte.

 Qualcuno sa come risolvere almeno il primo punto?
(...)
Non credo di aver capito bene.
Quando intercetti il cambiamento di riga (che riesci gia' a fare, mi par di
capire) scrivi il numero che ti serve.
Potrebbe forse essere utile un array a parte in cui ti memorizzi il numero
che hai inserito per ogni riga, in modo da verificare doppioni, fare
rinumerazioni e altro.
Ma temo di non aver capito il problema.
Ciao
Aldo

Come al solito non sono riuscito a farmi capire. Adesso ci riprovo.
Ho la necessità di implementare un editor simile all'editor del codice di
VB.
E fin quì credo che tutti sappiate di cosa parlo.
Nello specifico l'editor deve avere queste caratteristiche:
1) presentare il numero di riga affianco al codice.
2) fare il parsing del codice scritto per capire se è un comando e quindi
    evidenziarlo con un colore diverso.
3) indentare automaticamente in caso di strutture tipo If, For, etc etc.
Non mi interessa vedere parametri di funzioni, o sintassi dei comandi in
tooltips.
Durante la digitazione del codice, devo individuare ed evidenziare la
presenza di testo particolare, che è contenuto in un array.
Scandendo tutto il contenuto del controllo l'operazione risulta troppo
lenta e si nota uno sfarfallio (evitabile con diversi trucchi) che ne
dimostra la poca efficienza. In effetti è stupido eseguire l'operazione
per testo già controllato. Quindi la soluzione migliore sarebbe quella di
esaminare solo il contenuto della riga corrente. Il controllo rich mi
permette
di sapere il numero di riga corrente, ma non la posizione di inizio e di
fine,
quindi mi servirebbe una routine che facesse questo, ho pensato di andare
a ritrovo dal punto corrente fino al primo chr(10) o 13 non ricordo mai
quale viene prima, ma non ho ancora provato.
Il punto più dolente è la realizzazione di un numerato.
Il controllo righ permette un puntato, ma non uno numerato.
In poche parole a me serve avere un numero prima della riga che mi
indichi appunto il numero di riga, ma che non possa essere cancellato
come avviene con il cerchietto dell'elenco puntato, e che presenti il numero
giusto anche se viene cancellata una riga intermedia.
Spero di essere stato più chiaro di prima.
Se qualcuno volesse avere informazione più dettagliate sarò felice di
dargliele, ammesso che ci riesca.
Grazie ancora per l'interessamento.

...
