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