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;
(делает это, потому что это программа с несколькими клавиатурами, и мне нужно разделять пользовательский ввод)
Это правильное поведение? Как я могу остановить свои изменения цвета от переопределения цвета по умолчанию?
обновление: решено ... небрежно (применяя цвет по умолчанию всякий раз, когда кто-то печатает), но я оставляю это открытым на случай, если кто-то придумает лучшее решение.