Usiłuję pokolorować linie tekstu w polu RichEdit, przy wstawianiu do niego tekstu, chciałbym np. z jednego Edit-a wstawiać tekst zielony, a z drugiego niebieski. Napisałem następujący kod:

void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
switch (Key){
        case VK_RETURN:
                int poczatek = RichEdit1->Text.Length();
                RichEdit1->Lines->Add(Edit1->Text);
                int koniec = RichEdit1->Text.Length();

                RichEdit1->Perform(EM_SETSEL, poczatek, koniec);

                Richedit::CHARFORMAT2 cfm2;
                cfm2.cbSize = sizeof(Richedit::CHARFORMAT2);
                cfm2.crTextColor=clGreen;
                RichEdit1->Perform(EM_SETCHARFORMAT,
                           static_cast<WPARAM>(SCF_SELECTION),
                           reinterpret_cast<LPARAM>(&cfm2));
	        break;
        }
}

i ... :-(
Tekstu nie koloruje, choć jest widoczna jakaś zmiana (pogrubienie). Najdziwniejsze jest to, że jeżeli skomentuję linie wyznaczające początek i koniec zaznaczenia i wartości w Perform(EM_SETSEL, ... ) wpiszę ręcznie to wszystko działa ok [???]

Zgłupiałem dokumentnie... Ktoś ma jakiś pomysł dlaczego tak się dzieje ewentualnie jakiś inny pomysł na wykonanie tego zadania.

Pozdrawiam
Radek