在做打字程序时,在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.   

    //判断汉字的方法
    procedure TForm1.Button1Click(Sender: TObject);
    var
      s:string;
    begin
      s:=Edit1.Text;
      if ord(s[9])>128 then
        ShowMessage('该位置字符是汉字');
    end;
      

  3.   

    我代码是这样写的,不能正确显示颜色,帮我看看有什么问题?procedure TFrmTextInput.RichEditInputChange(Sender: TObject);
    var
            i,j:integer;//i,j 分别记录样本字符串和录入字符串的字符的位置
            Cusor:integer;//记录光标的位置
            index:integer;
            Samplelength,InputLength:integer;//记录两字符串的总长度begin
           strSample:=RichEditSample.Text;
            strInput:=RichEditInput.Text;
            Cusor:=RichEditInput.SelStart;
            index:=cusor div 2;  //使光标位置和字符串数组的位置一致
      //     SampleLength:=length(strSample);
      //     InputLength:=length(strInput);
           // 将输入的字体颜色预置为蓝颜色
           RichEditInput.DefAttributes.Color:=clBlue;
           //对输入的字是否正确作判断,若不正确,则改变它的颜色
        if cusor>=1 then
           if strInput[index]<>strSample[index] then
               begin
                      // 将刚才输入的字置于红颜色                  RichEditInput.selStart:=cusor-2 ;
                      RichEditInput.selLength:=2;
                      RichEditInput.SelAttributes.Color:=clRed;
                      //  恢复光标的位置
                     RichEditInput.selStart:=cusor;
                      //  重置于蓝颜色
                    RichEditInput.selAttributes.color:=clBlue;
               end;