[求助]怎么实现这个功能?
高手们好,我以初学者,最近做一个模仿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;