unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit ;
    RichEdit2: TRichEdit;
    procedure RichEdit2Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  Len,before:integer;implementation{$R *.dfm}procedure TForm1.RichEdit2Change(Sender: TObject);
  var
   p:integer;
begin
  if p=0 then
    begin
     RichEdit1.SelStart:=0;
     RichEdit1.SelLength:=Length(RichEdit2.Text);
     RichEdit2.SelStart:=0;
     RIchEdit2.SelLength:=Length(RichEdit2.Text);
     if RichEdit1.SelText=Richedit2.SelText then
        RichEdit1.SelAttributes.Color:=clred;
     before:=Length(RichEdit2.Text);
     p:=2;
    end
    else     begin
       Len:=Length(Richedit2.Text)-before;
       RichEdit1.SelStart:=before;
       RichEdit1.SelLength:=len;       RichEdit2.SelStart:=before;
       RichEdit2.SelLength:=Len;
       if RichEdit1.SelText=Richedit2.SelText then
        RichEdit1.SelAttributes.Color:=clred;
        before:=Length(Richedit2.Text);
        P:=2
     end;
end;end.
=======
上边这段代码可以编译通过,目的是RichEdit2中输入RichEdit1中提供的文字,如果输入的问题相同,RichEdit1中的文字就变成红色,现在的问题是,RichEdit2中输入文字后,输入的文字被选中,如果继续输入就把刚才输的文字覆盖掉了,问,如何让光标停留在输入的文字的后面.请大家帮看一下,我可以再加分

解决方案 »

  1.   

    procedure   TForm1.RichEdit2Change(Sender:   TObject); 
        var 
          p:integer; 
    begin 
        if   p=0   then 
            begin 
              RichEdit1.SelStart:=0; 
              RichEdit1.SelLength:=Length(RichEdit2.Text); 
              RichEdit2.SelStart:=0; 
              RIchEdit2.SelLength:=Length(RichEdit2.Text); 
              if   RichEdit1.SelText=Richedit2.SelText   then 
                    RichEdit1.SelAttributes.Color:=clred; 
              before:=Length(RichEdit2.Text); 
              p:=2; 
            end 
            else           begin 
                  Len:=Length(Richedit2.Text)-before; 
                  RichEdit1.SelStart:=before; 
                  RichEdit1.SelLength:=len;               RichEdit2.SelStart:=before; 
                  RichEdit2.SelLength:=Len; 
                  if   RichEdit1.SelText=Richedit2.SelText   then 
                    RichEdit1.SelAttributes.Color:=clred; 
                    before:=Length(Richedit2.Text); 
                    P:=2 
              end;
            RichEdit2.SelStart:=Length(RichEdit2.Text);
              RichEdit2.SelLength:=0;
    //此句也可以不写,上一句已定位
    end; 
      

  2.   

    不想给你改的太多
    在p:=2; 后面加两句:
    RichEdit2.SelStart:=Length(RichEdit2.Text)-2;  //要减2,因为末尾回自动加上#13+#10两个换行符
    RichEdit2.SelLength:=0;