1. TEdit 不能达到你的要求,建议用 TRichEdit 或第三方控件 SynEdit 等实现文字颜色特显。2. 中文文字是双字节,你的事件要考虑这些,还有输入法发出的键盘事件(连续的)

解决方案 »

  1.   

    在输入英文时能正确有将打错的字的Color改为红色。但在输入中文里却不能正确有比较???请帮我看一看下面的代码:
    var
      Form1: TForm1;
      ModifyLength:Integer;
    procedure TForm1.RichEdit1Change(Sender: TObject);
    var
      i:Integer;
      x,y:String;
    begin
      i:=Length(Richedit1.Text );
      RichEdit1.SelStart :=ModifyLength;
      RichEdit1.SelLength :=i-ModifyLength;
      x:=Copy(Line1.Caption ,ModifyLength-1,i-ModifyLength);
      y:=RichEdit1.SelText;
      if x<>y then          //在这里为什么处理中文时没有更改呢??? 
        RichEdit1.SelAttributes.Color:=Clred;
      RichEdit1.SelStart :=i;  //取消当前的选择不知用什么就用这一句代替了
      RichEDit1.SelAttributes.Color :=Cllime;
    end;procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      ModifyLength:=Length(RichEdit1.Text );  //应取得字符的开始位置
      if Length(Line1.Caption)<=Length(RichEdit1.Text)-2 then
        RichEdit2.SetFocus;
      if (key=8) then
        key:=0;
    end;
      

  2.   

    我曾经作过一个类似的东西。如果你给我写信([email protected]),我将把它送给你一份。