 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
hernanruiz89 Cdt

Registrado: 15 Ago 2002Mensajes: 13
|
Publicado: Jue 20 Feb, 2003 12:09 am Asunto: TRichEdit |
|
|
| Como hago para que en un TRichEdit combie el color las palabras reservadas como por ejemplo int pero yo lo hago aciendo una busqueda en el bocumento y cambiando el color del texto seleccionado cada vez que se modifica el texto pero al hacer esto se nota mucho cuando el texto es muy grande de que otra forma se puede hacer |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Jue 20 Feb, 2003 10:23 am Asunto: |
|
|
Espero que esto te sirva. Parpadea un poco, pero eso ya lo intentas arreglar.
Modifica sólo ahí donde se cambia el texto:
| Código: |
void __fastcall TForm1::RichEdit1Change(TObject *Sender)
{
TPoint carLinea;
carLinea=RichEdit1->CaretPos; //tiene la posicion actual del cursor en lineas y caracteres
TSearchTypes searchO1,searchO2;
searchO1=searchO1<<stWholeWord<<stMatchCase;//tipo 1 de búsqueda Match y whole
searchO2=searchO2<<stMatchCase;
int posVieja;
posVieja=RichEdit1->SelStart; //guarda la posicion actual de cursor en caracteres
RichEdit1->HideSelection=true;
//miro por delatante del cursor opcion1 (palabra entera)
int position;
position=RichEdit1->FindTextA("int",posVieja-5,5,searchO1);
if (position!=-1) //si palabra entera ->" int "
{
RichEdit1->SelStart=position; //selecciono el texto
RichEdit1->SelLength=3;
RichEdit1->SelAttributes->Color=clRed; //lo pinto
}
else //sino, si solo concuerda " int|erior"
{
position=RichEdit1->FindTextA("int",posVieja-5,5,searchO2);
if (position!=-1)
{
RichEdit1->SelStart=position; //selecciono el texto
RichEdit1->SelLength=3;
RichEdit1->SelAttributes->Color=clBlack; //lo pinto
}
}
//miro por detrás del cursor con opcion1 (palabra entera)
position=RichEdit1->FindTextA("int",posVieja,5,searchO1);
if (position!=1) //si palabra entera " int "
{
RichEdit1->SelStart=position; //selecciono el texto
RichEdit1->SelLength=3;
RichEdit1->SelAttributes->Color=clRed; //lo pinto
}
else //sino, si solo concuerda "p|into"
{
position=RichEdit1->FindTextA("int",posVieja,5,searchO2);
if (position!=-1)
{
RichEdit1->SelStart=position; //selecciono el texto
RichEdit1->SelLength=3;
RichEdit1->SelAttributes->Color=clBlack; //lo pinto
}
}
RichEdit1->SelStart=posVieja; //restablezco el valor del cursor
RichEdit1->SelAttributes->Color=clBlack; //restablezco el color
RichEdit1->HideSelection=false; //que muestre la seleccion
} |
Saludos |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|