大家好,我在用delphi写一个简单的类似金山打字的打字练习程序,现在在memo1中有一段文章,在memo2中输入,如果与memo1中的文字不匹配,需要将打错的字用红色显示。查阅了一下,大家都说memo不能实现,要用richedit,可是我又不知道怎么用,连这个控件在哪里都不知道。下面是我的程序,大家帮帮忙。如果一定要用richedit,可不可以说清楚一点,谢谢啦!var p1,p2:pchar;procedure TForm2.Memo2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
p1:=pchar(memo1.Text);
p2:=pchar(memo2.Text);
if p1<>p2 then
begin
memo1.SelText:=p1;
memo2.SelText:=p2;
//将memo1.seltext,memo2.seltext设置为红色
end;
p1:=p1+1;
p2:=p2+1;
end;
Shift: TShiftState; X, Y: Integer);
begin
p1:=pchar(memo1.Text);
p2:=pchar(memo2.Text);
if p1<>p2 then
begin
memo1.SelText:=p1;
memo2.SelText:=p2;
//将memo1.seltext,memo2.seltext设置为红色
end;
p1:=p1+1;
p2:=p2+1;
end;
RichEdit1.SelLength := 100;
RichEdit1.SelAttributes.Color := clRed;ps: RichEdit控件在Win32下面,一般情况下是第4个。
procedure TForm1.RichEdit2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
richedit1.SelStart:=pos;
richedit2.SelStart:=pos;
richedit1.SelLength:=1;
richedit2.SelLength:=1;
if richedit1.SelText<> richedit2.SelText then
begin
richedit1.SelAttributes.Color:=clred;
richedit2.SelAttributes.Color:=clred;
end;
richedit1.SelStart:=pos+1;
richedit2.SelStart:=pos+1;
richedit1.SelText:='';
richedit2.SelText:='';
pos:=pos+1;end;现象如下:
richedit1 a b c d e f g h i
richedit2 a b d d e w q h i
除非你自己去改写了。
begin
richedit1.SelAttributes.Color:=clred;
richedit2.SelAttributes.Color:=clred;
end;
richedit1.SelAttributes.Color:=clWindowText; //加上这两句
richedit2.SelAttributes.Color:=clWindowText;