Aquí paso el código:
Código:
El código es extenso, pero no encontré como simplificarlo. Si alguien de ustedes me pudiera ayudar en eso, se lo agradecería. Pero ese no es el problema: Aquí está la duda:SendMessage(RichEdit1->Handle, EM_HIDESELECTION, 1,0); int aStart=RichEdit1->SelStart; int foundAt = (-1); RichEdit1->SelStart=aStart+(RichEdit1->Lines->Strings[RichEdit1->CaretPos.y].Length()-RichEdit1->CaretPos.x); RichEdit1->SelStart=RichEdit1->SelStart-RichEdit1->Lines->Strings[RichEdit1->CaretPos.y].Length(); RichEdit1->SelLength=RichEdit1->SelStart-RichEdit1->Lines->Strings[RichEdit1->CaretPos.y].Length(); RichEdit1->SelAttributes->Color=clBlack; RichEdit1->SelLength=0; AnsiString AWord="int"; foundAt = RichEdit1->FindTextA(AWord,foundAt+1,RichEdit1->Text.Length()-foundAt,TSearchTypes() << stWholeWord); while (foundAt!=(-1) && RichEdit1->SelStart < aStart+RichEdit1->SelStart-RichEdit1->Lines->Strings[RichEdit1->CaretPos.y].Length()){ RichEdit1->SelStart = foundAt; RichEdit1->SelLength = AWord.Length(); RichEdit1->SelAttributes->Color = clRed; foundAt = RichEdit1->FindTextA(AWord,foundAt+1,RichEdit1->Text.Length(),TSearchTypes() << stWholeWord); } RichEdit1->SelStart=aStart; RichEdit1->SetFocus(); SendMessage(RichEdit1->Handle, EM_HIDESELECTION, 0,0);
Lo que hace este programa es destacar la palabra "int", al tipearla cambia su color a rojo. Hasta acá todo bien, pero cuando escribo int dos veces seguidas, y sigo escribiendo, las letras que escribo se tornan rojas.
No se si me expliqué bien, pero si no entienden, pruébenlos ustedes mismos.
Saludos.