C
chyn.1
Unregistered / Unconfirmed
GUEST, unregistred user!
将一篇txt文件显示在richedit控件中,现在想从中检索出指定字符串如'论文',并用特定的颜色显示出。
我的程序如下:
v_curLen:=0;
for i:=0 to Richedit1.Lines.Count-1 do
begin
Richedit1.SetFocus;
if Richedit1.Lines<>'' then
begin
v_pos:=Pos(trim(Edt_FindCon1.text),Richedit1.Lines);
if v_pos>0 then
begin
Richedit1.SelStart:=v_curLen+v_Pos-1;
Richedit1.SelLength:=Length(trim(Edt_FindCon1.Text));
Richedit1.SelAttributes.Color:=clRed;
end;
v_curLen:=v_curLen+length(Richedit1.Lines);
end
else
begin
v_curLen:=v_curLen+4;
end;
end;
现在的问题是:
1.对第一段能够进行正确的定位和改变字体的颜色,但第二段就不行,我想可能是因为回车换行符造成
不能正确定位,但我用 If pos(#13#10,Richedit1.Lines)>0 then SHowmessage(' 有回车换行');
也无法在一行明明有回车换行符的行里找到回车;如何能找到richedit中的回车换行符。
2.如果我所要查找的字符串正好在一行的行末和下一行的行首,则用Pos(trim(Edt_FindCon1.text),Richedit1.Lines)
就不能查到,如何解决这个问题;
3。将richedit的scrollbars已设为ssboth,为什么只出现垂直滚动条,而不出现水平滚动条。
我的程序如下:
v_curLen:=0;
for i:=0 to Richedit1.Lines.Count-1 do
begin
Richedit1.SetFocus;
if Richedit1.Lines<>'' then
begin
v_pos:=Pos(trim(Edt_FindCon1.text),Richedit1.Lines);
if v_pos>0 then
begin
Richedit1.SelStart:=v_curLen+v_Pos-1;
Richedit1.SelLength:=Length(trim(Edt_FindCon1.Text));
Richedit1.SelAttributes.Color:=clRed;
end;
v_curLen:=v_curLen+length(Richedit1.Lines);
end
else
begin
v_curLen:=v_curLen+4;
end;
end;
现在的问题是:
1.对第一段能够进行正确的定位和改变字体的颜色,但第二段就不行,我想可能是因为回车换行符造成
不能正确定位,但我用 If pos(#13#10,Richedit1.Lines)>0 then SHowmessage(' 有回车换行');
也无法在一行明明有回车换行符的行里找到回车;如何能找到richedit中的回车换行符。
2.如果我所要查找的字符串正好在一行的行末和下一行的行首,则用Pos(trim(Edt_FindCon1.text),Richedit1.Lines)
就不能查到,如何解决这个问题;
3。将richedit的scrollbars已设为ssboth,为什么只出现垂直滚动条,而不出现水平滚动条。