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
Visual Basic 6 - RichtextBox
Forum - Visual Basic 6 - RichtextBox

Avatar
gabryk (Normal User)
Rookie


Messaggi: 24
Iscritto: 04/10/2006

Segnala al moderatore
Postato alle 10:45
Mercoledì, 04/10/2006
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.

PM Quote
Avatar
gabryk (Normal User)
Rookie


Messaggi: 24
Iscritto: 04/10/2006

Segnala al moderatore
Postato alle 15:29
Giovedì, 05/10/2006
Nessuno può aiutarmi?

PM Quote
Avatar
Reese (Ex-Member)
Pro


Messaggi: 179
Iscritto: 09/08/2006

Segnala al moderatore
Postato alle 20:29
Sabato, 07/10/2006
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.

PM Quote