标题:[求助]怎么实现这个功能?
只看楼主
随航
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-6-24
 问题点数:0 回复次数:0 
[求助]怎么实现这个功能?
高手们好,我以初学者,最近做一个模仿WORD的文本编辑工具,其中有几个地方做得不是很理想,特请教:
1.编辑菜单里面的,撤销(ctrl+z)和重做(ctrl+y)在delphi怎么实现啊?
2."查找....".里,只能查找一个,如果文本中有多个FINDTEXT,cpu就达到100%,怎么办啊?
附://finddialog1的对话处理事件(onfind事件)
procedure TForm1.FindDialog1Find(Sender: TObject);
var
selpos:integer;
begin
with tfinddialog(sender) do
begin
selpos:=pos(findtext,richedit1.lines.Text);
if frfindnext in finddialog1.options then
begin
richedit1.selstart:=selpos-1;
richedit1.sellength:=length(findtext);
richedit1.SelAttributes.Color:=clred;
end
else
messagedlg(concat('没有找到''',findtext),mterror,[mbok],0);
end;
end;

3.“替换...”里如果REPLACETEXT在文本里也有多个的时候,CPU又达到100%.
附://替换对话框的onreplace处理事件
procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
var
selpos:integer;//表示替换字符所在的位置
flag:boolean;
n:integer;//统计用
begin
with treplacedialog(sender) do
begin
selpos:=pos(findtext,richedit1.Lines.Text);
if frreplace in replacedialog1.options then
begin
if selpos>0 then
begin
richedit1.SelStart:=selpos-1;
richedit1.SelLength:=length(findtext);
richedit1.seltext:=replacetext;
end
else
messagedlg(concat('没有找到''',findtext),mterror,[mbok],0);
end;
if frreplaceall in replacedialog1.Options then
begin
if selpos>0 then
flag:=true
else flag:=false;
n:=0;
if flag then
begin
while selpos>0 do
begin
richedit1.SelStart:=selpos-1;
richedit1.SelLength:=length(findtext);
richedit1.seltext:=replacetext;
selpos:=pos(findtext,richedit1.Lines.Text);
n:=n+1;
end;
messagedlg('全部替换完毕!共替换' + inttostr(n) + '处.',
mtinformation,[mbok],0);
end
else
messagedlg(concat('没有找到''',findtext),mterror,[mbok],0);
end;
end;
end;
搜索更多相关主题的帖子: 怎么办 procedure 
2005-06-24 09:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-21493-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.156602 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved