如何找出Trichedit控件中的回车换行符等3个问题(200分)

  • 主题发起人 主题发起人 chyn.1
  • 开始时间 开始时间
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,为什么只出现垂直滚动条,而不出现水平滚动条。

 
确实是有你说的问题,RichEdit的查找字符串还要复杂一点点。:)
我这里有写好的程序,你稍微一改就可以了,你的Email?
〉〉将richedit的scrollbars已设为ssboth,为什么只出现垂直滚动条,而不出现水平滚动条
WordWrap := False;


 
我因为改了E_mail地址,账号总不能激活,现在用的是别人的账号。
我的E-Mail是:lily_chyn@163.com 谢谢!
 
你代码定位有问题,试试我的:
procedure TForm1.Button2Click(Sender: TObject);
var
FoundAt: LongInt;
ToEnd: integer;
begin
ToEnd := Length(richedit1.Text) -StartPos;
FoundAt := richedit1.FindText(Edt_FindCon1.text, StartPos, ToEnd, []);
if FoundAt <> -1 then begin
richedit1.SetFocus;
richedit1.SelStart := FoundAt;
richedit1.SelLength := Length(Edt_FindCon1.text);
Richedit1.SelAttributes.Color:=clRed;
PostMessage(Richedit1.Handle, EM_SCROLLCARET, 0, 0);
StartPos:=FoundAt+richedit1.SelLength ;
end
else
if StartPos=0 then
showmessage('未找到!')
else
showmessage('查找完毕!');
end;

procedure TForm1.Edt_FindCon1Change(Sender: TObject);
begin
StartPos:=0;
end;

 
谢谢各位
 
后退
顶部