delphi实现记事本的查找功能

ME_YOU 2009-05-09 10:54:07
我在用delphi实现记事本功能,想用FindDialog实现查找功能,但是不知道代码该如何实现,请各位帮帮忙,谢啦!再写了如下代码后不知道该如何进行下去:
var str:string;
m:integer;

if finddialog1.Execute then
if 点击“查找下一个” then //主要是如何实现这个点击“查找下一个”功能 begin
str:=finddialog1.findtext;
m:=Pos(str,memo.text); //用memo实现文本编辑
if m=0 then messagedlg('找不到''+str+''',mtwarning,[mbok],0)
else 其他代码;
end;


现在主要不知道点击“查找下一个”按钮如何实现
...全文
468 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Seamour 2009-05-09
  • 打赏
  • 举报
回复
找完之后记录一下当前偏移量,下次继续从那个位置之后找
ME_YOU 2009-05-09
  • 打赏
  • 举报
回复
能否请教一下,为什么s := Copy(Memo1.Text, FStartPos, Length(Memo1.Text)); 这句总是提示 Missing operator or semicolon
ME_YOU 2009-05-09
  • 打赏
  • 举报
回复
谢谢啊,代码还是有点问题,不过帮了很大的忙,再次感谢!
taxi 2009-05-09
  • 打赏
  • 举报
回复
这个实现了继续查找功能,只是向下继续查找。
unit MainFrm;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
FindDialog1: TFindDialog;
procedure Button1Click(Sender: TObject);
procedure FindDialog1Find(Sender: TObject);
private
{ Private declarations }
FStartPos: Integer;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
FStartPos := 1;
FindDialog1.Execute;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
var
ft, s: string;
i: Integer;
begin
ft := FindDialog1.FindText;
s := Copy(Memo1.Text, FStartPos, Length(Memo1.Text));
i := Pos(ft, s);
if i <> 0 then
begin
Memo1.SelStart := FStartPos + i - 2;
Memo1.SelLength := Length(ft);
FStartPos := Memo1.SelStart + Length(ft) + 1;
end;
end;

end.

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧