Delphi Richedit控件的问题.大神请留步!
使用Richedit控件,我想单击一个按钮之后它自动给某些特定的字符更换颜色该怎么做?列如Richedit的内容如下afdhjhdsagfuigfa-asdhfudsoa...
使用 Richedit控件,我想单击一个按钮之后它自动给某些特定的字符更换颜色该怎么做?
列如Richedit的内容如下
afdhjhdsagfuigfa -asdhfudso
afdhjhdsagfuigfa -asdhfudso
afdhjhdsagfuigfa -asdhfudso
afdhjhdsagfuigfa -asdhfudso
我想让每行的a变为红色,-以及-后面的所有字符[包括那个a]变为蓝色,该怎么做.麻烦大神不啬赐教.........还有比如:我需要"afdhjhdsagfuigfa -asdhfudso”中的afdhi都变为红色,-以及-后面所有字符都变成蓝色的.又该怎么做呢.急啊。有木有大神知道的! 展开
列如Richedit的内容如下
afdhjhdsagfuigfa -asdhfudso
afdhjhdsagfuigfa -asdhfudso
afdhjhdsagfuigfa -asdhfudso
afdhjhdsagfuigfa -asdhfudso
我想让每行的a变为红色,-以及-后面的所有字符[包括那个a]变为蓝色,该怎么做.麻烦大神不啬赐教.........还有比如:我需要"afdhjhdsagfuigfa -asdhfudso”中的afdhi都变为红色,-以及-后面所有字符都变成蓝色的.又该怎么做呢.急啊。有木有大神知道的! 展开
1个回答
展开全部
你这个问了好几遍了吧?
procedure TForm1.btn1Click(Sender: TObject);
var
s: string;
i,j,k:Integer;
begin
k:=0;
s:='';
for j:=0 to redt1.lines.count-1 do
begin
k:=k+Length(s);
s:=redt1.Lines[j];
for i:=0 to Length(s) do
begin
if s[i]='a' then
begin
redt1.SelStart :=k+i-1;
redt1.SelLength :=1;
redt1.SelAttributes.Color :=clRed;//a先变红色
end;
end;
i:=Pos('-',s);
if i>0 then
begin
redt1.SelStart :=k+i-1;
redt1.SelLength :=Length(s)-i+1;
redt1.SelAttributes.Color :=clblue;//-以后变蓝色
end;
k:=k+2;
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
var
s,s1,s2: string;
i,j,k,l,m:Integer;
begin
k:=0;
s:='';
s1:='afdhj'; //要找的字符串
l:=Length(s1);
for j:=0 to redt2.lines.count-1 do
begin
k:=k+Length(s);
s:=redt2.Lines[j];
for i:=0 to Length(s) do
begin
s2:='';
if s[i]=s1[1] then
begin
for m:=0 to l-1 do
s2:=s2+s[i+m];
if s2=s1 then
begin
redt2.SelStart :=k+i-1;
redt2.SelLength :=l;
redt2.SelAttributes.Color :=clRed;//a先变红色
end;
end;
end;
i:=Pos('-',s);
if i>0 then
begin
redt2.SelStart :=k+i-1;
redt2.SelLength :=Length(s)-i+1;
redt2.SelAttributes.Color :=clblue;//-以后变蓝色
end;
k:=k+2;
end;
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询