在Delphi里怎么编程关于两个richedit里的字体颜色变化

2025-04-09 06:11:17
推荐回答(1个)
回答1:

1.
字符串可以看作字符数组。redt2里输入的字就是字符串的最后一个,
p := length(redt2.Text) -2; //最后一个字符好像是换行符
s := redt2.Text[p];

拿s 和redt1里对应的字符比较,
if s <> redt1.Text[p] then
begin
redt1.SelStart :=n; //选择部分开始位置
redt1.SelLength :=1; //选择部分长度
redt1.SelAttributes.Color := clred;
end;

以上应该只适用非汉字情况,汉字是2个字符对应1个汉字。

2.
procedure TForm1.redt2Change(Sender: TObject);
var
i: Integer;
begin
for i := 0 to Length(redt2.text) -1 do
begin
redt1.SelStart := i;
redt1.SelLength := 1;
if Copy(redt1.Text, i +1, 1) = Copy(redt2.Text, i+1, 1) then
redt1.SelAttributes.Color := clBlue
else
redt1.SelAttributes.Color := clRed;
end;
end;

3.
建议用高版本的delphi来做,比如xe系列的,unicode还是方便很多

4.
Procedure TForm1.FormCreate(Sender: TObject);
Begin
RichEdit1.Text := '012345678';
End;

Procedure TForm1.Button1Click(Sender: TObject);
Begin
RichEdit1.SelStart := 0;
RichEdit1.SelLength := 3;
RichEdit1.SelAttributes.Color := clRed; //012为红色

RichEdit1.SelStart := 5;
RichEdit1.SelLength := 4;
RichEdit1.SelAttributes.Color := clBlue; //5678为蓝色

//RichEdit1.ClearSelection;
//只是删除最后一个选区(如上面为蓝色的选区)的字符,不是清除 所有选择样式
End;

Procedure TForm1.Button2Click(Sender: TObject);
Begin
RichEdit1.SelStart := 0; //清除 所有选择样式
RichEdit1.SelLength := Length(RichEdit1.Text);
RichEdit1.SelAttributes.Color := clBlack;
End;