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
串的字母对应的字母相匹配,它是红色,否则,它是蓝色的。TRichEdit颜色问题
我的问题是,当我再次键入整个RichEdit1文本使用相同的第一个字母(如果RichEdit1
的第一个字母是蓝色的,那么整个文字变成蓝色)。
顺便说一下,这不是我简化它的实际代码,因为有多个TRichEdits。
的TRichEdits是只读的,我通过类似RichEdit1.Text := RichEdit1.Text+Key;
分配字母(这样做是因为它是一个多键盘程序,我需要单独的用户输入)
这是正确的行为?如何阻止我的颜色更改覆盖默认颜色?
更新:解决它...以马虎的方式(应用默认颜色,每当有人键入),但我保持这个打开,以防有人提出更好的解决方案。
首先,你的代码甚至不编译...第二,当你调用这个子程序?我根据你的代码做了一个小例子,增加了更正和改进,对我来说它非常有用。 – jachguate 2010-09-22 03:09:29
RichEdit1..SelAttributes.Color:= clBlue;(你已经在richedit1和selattributes.color之间加了一个额外的东西) – 2010-09-22 05:12:28
@jachguate:那不是整个代码,只是一小段顺便说一句。我把它称为onkeypress。 – Dian 2010-09-22 05:22:09