Oppure

Loading
04/10/06 8:45
gabryk
Ho questa funzione (presa da MultiChat di HeDo) che uso per aggiungere del testo in una 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.
aaa
05/10/06 13:29
gabryk
Nessuno può aiutarmi?
aaa
07/10/06 18:29
Reese
A me il problema sembra sorga quando scrivi

txtChat.SelStart = 0
txtChat.SelLength = Len(txtChat)

Dovresti scegliere qui solo quello che ti interessa. Cioè il SelStart sul numero di carattere che ti interessa e il SelLength sul numero di caratteri totali che vuoi selezionare.
aaa