ans:= RichEdit1.Text
for i:=1 to Length(ans) do
begin
RichEdit1.SelStart := i-1;
RichEdit1.SelLength:= 1;
if ans[i] = correct[i] then
RichEdit1.SelAttributes.Color := clRed
else
RichEdit1.SelAttributes.Color := clBlue;
Если буква в ans
совпадает с буквой в той же позиции, что и буква в строке correct
, она окрашивается в красный цвет, в противном случае — в синий.
Моя проблема заключается в том, что когда я снова печатаю, весь текст RichEdit1 окрашивается так же, как и первая буква (если первая буква RichEdit1
синяя, то весь текст становится синим).
Кстати, это не настоящий код, я просто упростил его, потому что есть несколько TRichEdits.
TRichEdits доступны только для чтения, и я назначаю буквы чем-то вроде RichEdit1.Text := RichEdit1.Text+Key;
(делаю это, потому что это программа с несколькими клавиатурами, и я нужно разделить пользовательский ввод)
Это правильное поведение? Как сделать так, чтобы мои изменения цвета не переопределяли цвет по умолчанию?
update: Решил... неаккуратно (применяя цвет по умолчанию всякий раз, когда кто-то печатает), но я держу это открытым на случай, если кто-то предложит лучшее решение.