在做打字程序时,在RichEdit控件中对输入的汉字作判断,正确的字显示蓝色,错误的显红色,怎么写程序?

解决方案 »

  1.   

    procedure TForm1.RichEdit1Change(Sender: TObject);
    var Startpos,Toend,x,y:integer;
        curstring:string;
    begin
         curstring:=RichEdit1.Lines[RichEdit1.Lines.Count-1];;
         StartPos := 0;
         ToEnd := length(Richedit2.text)-1;
         X := Richedit2.FindText(curstring,StartPos,toEnd,[stMatchCase]);
         if x<>-1 then
         begin
            Richedit2.SetFocus;
            Richedit2.selstart := X;
            RichEdit2.SelLength := Length(curstring);
            RichEdit2.SelAttributes.Color:=clRed;
         end;
    end;
      

  2.   

    你好,感谢你的帮助,不过在运行时,还不能按要求正确显示
    在输入字时,应对每一个字作判断,然后再显示出来,我以前的作法是,在onchange事件过程中
    输入字后,作判断,若不正确,则选中刚才输入的汉字,再赋予红色,但设置无效,输入英文没有问题,但汉字不行,我想这也许跟输入法有一定的关系。究竟该如何做,还请你多赐教。
                                                                   谢谢!
                                                                       BillGaze
      

  3.   

    因为汉字占两个字节 ,设SelLength为2试试
    procedure TForm1.RichEdit1Change(Sender: TObject);
    begin
      if RichEdit1.SelStart > 0 then
        RichEdit1.SelStart := RichEdit1.SelStart - 1;
      RichEdit1.SelLength := 1;
      RichEdit1.SelAttributes.Color:=ClRed;end;