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
Delphi - Cambiare colore ad una singola linea di un memo
Forum - Delphi - Cambiare colore ad una singola linea di un memo

Avatar
smanettone83 (Normal User)
Pro


Messaggi: 124
Iscritto: 20/10/2010

Segnala al moderatore
Postato alle 15:25
Lunedì, 25/10/2010
Ciao a rieccomi!
Come posso fare se ad esempio volessi cambiare colore ad una determinata linea di un memo?
es: su 10 linee la numero 4 deve essere rossa mentre le restanti 6 devono essere nere.
grazie

PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 20:27
Lunedì, 25/10/2010
Col Memo non si può. Devi usare TRichEdit:
trovi prima la posizione di partenza e la lunghezza della riga (attenzione, la posizione di partenza non è il numero della linea, ma la posizione del carattere con cui inizia la linea che ti interessa):
Codice sorgente - presumibilmente Plain Text

  1. RichEdit.SelStart:= StartPosition;
  2. RichEdit.SelStart:= Length(RichEdit1.Lines.Strings[LineaCheDeviColorare];
  3. RichEdit.SelAttributes.Color:= clColoreDaUsare;




PM
Avatar
smanettone83 (Normal User)
Pro


Messaggi: 124
Iscritto: 20/10/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 11:08
Martedì, 26/10/2010
Grazie per la risposta gentilissimo come sempre. Credevo che fosse una cosa semplice e invece devo dire di essermi sbagliato, infatti dopo aver provato e riprovato per tutta la serata di ieri senza successo eccomi qui di nuovo nel forum. :)

Allora quello che sto facendo e' una chat multiutente dove tutto quello che viene scritto viene inviato dal server a tutti gli utenti connessi e riportato sulla lavagna in questo modo:

"SMANETTONE: ciao a tutti"
"Andrea: come va?"
"Luca: tutto bene grazie"

Ora io vorrei fare in modo che all'evento on change del richedit se sono io a scrivere il colore della line in questione diventi da nera a rossa, mentre il colore degli altri utenti rimane invariato. es:

"SMANETTONE: ciao a tutti" //colore rosso
"Andrea: come va?" //colore nero
"Luca: tutto bene grazie" //colore nero
"SMANETTONE: come procede?" //colore rosso
"Andrea: la solita"//colore nero
"Luca: oook" //colore nero

spero di essere stato abbastanza chiaro... come posso risolvere questo problema?

PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 14:21
Martedì, 26/10/2010
una domanda: la scritta rossa deve apparire per i mittenti (cioè tutti quelli che scrivono avranno nella loro RichEdit la linea di colore rosso) oppure solo la linea del TUO nome (come una sorta di amministratore o cose del genere)?

Beh comunque sia puoi fare questo:
Caso 1: Ogni mittente della chat deve vedere il suo messaggio in rosso nella SUA box
In questo caso è semplice: se ricordo bene dall'utilizzo dei server/client, colui che invia in teoria non dovrebbe ricevere il suo messaggio. In tal caso basterebbe mettere nell'invio del messaggio:

Codice sorgente - presumibilmente Delphi

  1. [...]
  2. //INVIO DEL MESSAGGIO Msg
  3. RichEdit1.SelStart:= RichEdit1.GetTextLen;
  4. RichEdit1.SelAttributes.Color:= clRed;
  5. RichEdit1.SelText:= ClientName+' scrive:'+Msg+ #13#10 //Msg è la variabile string contenente il messaggio. Importanti sono i caratteri #13#10 che evidenziano la fine della riga;
  6. [...]




Caso 2: Il TUO messaggio nella box di TUTTI i client deve apparire in rosso
Inserisci allora la condizione all'interno della ricezione del messaggio:
Codice sorgente - presumibilmente Delphi

  1. RichEdit1.SelStart:= RichEdit1.GetTextLen;
  2. if Mittente = 'SMANETTONE' then
  3.     RichEdit1.SelAttributes.Color:= clRed;
  4. RichEdit1.SelText:= 'SMANETTONE scrive:'+Msg+ #13#10;


Ultima modifica effettuata da a_butta il 26/10/2010 alle 14:33
PM
Avatar
smanettone83 (Normal User)
Pro


Messaggi: 124
Iscritto: 20/10/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 14:56
Martedì, 26/10/2010
la scritta in rosso appare solo all'utente personale in questione....
in poche parole ogni utente che scrive vedra' sulla lavagna il proprio nome scritto in rosso e tutto il resto nero.

PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 14:58
Martedì, 26/10/2010
allora è perfetto il primo caso

PM
Avatar
smanettone83 (Normal User)
Pro


Messaggi: 124
Iscritto: 20/10/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 13:08
Mercoledì, 27/10/2010
Testo quotato

Postato originariamente da a_butta:

allora è perfetto il primo caso



tenchiu! ;)

PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 13:41
Mercoledì, 27/10/2010
dez ol raiz! ;)

PM