| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 725 人关注过本帖
标题:[求助]怎么实现这个功能?
只看楼主 加入收藏
随航
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
快速回复:[求助]怎么实现这个功能?
数据加载中...
 
   



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

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