View Full Version : [Visual basic 6] Testo multicolore su textbox multiriga
Ho una textbox multiriga in cui aggiungo del testo. Vorrei poter scegliere un colore diverso per ogni riga aggiunta, è possibile?
Ok con la textbox semplice non si può fare, allora uso una Richtextbox, ma ho un altro problema.
Ho questa funzione che uso per aggiungere del testo nella suddetta richtextbox (txtChat)
Sub AddText(Testo As String, Optional ACapo As Boolean = True, Optional colore As ColorConstants)
txtChat.SelColor = colore
txtChat.Text = txtChat.Text & Testo ' chat
If ACapo Then txtChat.Text = txtChat.Text & vbCrLf
txtChat.SelStart = Len(txtChat.Text)
txtChat.Refresh
End Sub
Testo è la stringa che deve apparire nella txtChat, ACapo da il comando vbcrlf se è su True e colore contiene il codice di un colore.
Vorrei che quando viene usata la funzione l'ultimo testo inserito nella txtChat cambiasse colore (a seconda del codice contenuto in colore) e credevo che così potesse andare e invece no.
Il testo rimane nero, credo per qualche problema di refresh o cose simili...
Allora pensavo. Come posso dire da codice di selezionare solo il testo che mi interessa? Così una volta inserito il testo potrei dire di selezionarlo e cambiargli colore.
Una cosa tipo:
txtChat.selstart=0
txtChat.sellenght=len(txtChat.text)
txtChat.SelColor = colore
Solo che facendo così viene selezionato il testo di tutta la textbox. E di conseguenza impostato il colore uguale per tutte le righe.
Nella textbox vengono scritte sempre righe che terminano con un a capo vbcrlf, se può essere utile come info.
Ah e non rispondetemi "basta cambiare la selstart a seconda di dove vuoi partire", lo so! E' che non saprei come fare.
Siccome il testo che viene aggiunto è di lunghezza variabile e non determinabile a priori, come faccio a dirgli di iniziare la selezione da prima di inserirlo fino alla fine dello stesso?
Perchè se gli dico
txtChat.selstart=len(txtchat.text)
txtChat.Text = txtChat.Text & Testo
txtchat.sellenght=len(txtchat.text)
Non funziona. Cioè io ingenuamente gli direi, inizia la selezione dove si è arrivati a scrivere, poi aggiungi il testo, e infine continua la selezione fino alla fine del nuovo testo. Ma ovviamente se inizi la selezione e poi scrivi la stessa viene persa.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.