private{ Private declarations }
FSelPos: integer;
public{ Public declarations }end;
var
Form1 : TForm1;
implementation{$R *.dfm}procedure TForm1.FindDialog1Find(Sender : TObject);
var
S : string;
startpos : integer;
beginwith TFindDialog(Sender) dobegin{If the stored position is 0 this cannot be a find next. }if FSelPos = 0 then
Options := Options - [frFindNext];
{ Figure out where to start the search and get the corresponding
text from the memo. }if frfindNext in Options thenbegin{ This is a find next, start after the end of the last found word. }
StartPos := FSelPos + Length(Findtext);
S := Copy(Memo1.Lines.Text, StartPos, MaxInt);
endelsebegin{ This is a find first, start at the, well, start. }
S := Memo1.Lines.Text;
StartPos := 1;
end;
{ Perform a global case-sensitive search for FindText in S }
FSelPos := Pos(FindText, S);
if FSelPos > 0 thenbegin{ Found something, correct position for the location of the start
of search. }
FSelPos := FSelPos + StartPos - 1;
Memo1.SelStart := FSelPos - 1;
Memo1.SelLength := Length(FindText);
Memo1.SetFocus;
endelsebegin{ No joy, show a message. }if frfindNext in Options then
S := Concat("There are no further occurences of "", FindText,
"" in Memo1.")
else
S := Concat("Could not find "", FindText, "" in Memo1.");
MessageDlg(S, mtError, [mbOK], 0);
end;
end;
end;
// Show the FindDialog // Den FindDialog anzeigen procedure TForm1.Button1Click(Sender : TObject);
begin
FSelPos := 0;
FindDialog1.Execute;
end;
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Поиск в TMemo с использованием TFindDialog", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!