TRichEdit的问题,解决分可加

Mrkang 2007-12-09 01:14:49
unit Unit1;

interface

uses
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中输入文字后,输入的文字被选中,如果继续输入就把刚才输的文字覆盖掉了,问,如何让光标停留在输入的文字的后面.请大家帮看一下,我可以再加分
...全文
58 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
edongxu 2007-12-09
  • 打赏
  • 举报
回复
不想给你改的太多
在p:=2; 后面加两句:
RichEdit2.SelStart:=Length(RichEdit2.Text)-2; //要减2,因为末尾回自动加上#13+#10两个换行符
RichEdit2.SelLength:=0;
neweipeng 2007-12-09
  • 打赏
  • 举报
回复
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;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧