TFindDialog
English · Français · Suomi · Русский · 中文(中国)
TFindDialog
is a component that aids in searching information. It can be found on the Dialogs tab of the Component Palette.
It is important to know that the dialog itself does not perform a search; it just provides a user interface for all the search parameters. To activate a FindDialog, call its Execute() function. Create an OnFind method in which the search itself is performed.

Usage
The following examples illustrate usage of TFindDialog for search a specific phrase within the text stored in a memo (TMemo).
procedure TForm1.Button1Click(Sender: TObject);
begin
FindDialog1.Execute();
end;
procedure TForm1.FindDialog1Find(Sender: TObject);
var
k: integer;
begin
with Sender as TFindDialog do begin
k := Pos(FindText, Memo1.Lines.Text);
if k > 0 then begin
Memo1.SelStart := k - 1;
Memo1.SelLength := Length(FindText);
Memo1.SetFocus; // Memo1 must be activated, otherwise the selection effect will not be displayed
end else
Beep();
end;
end;If you want to repeat the operation several times with the same search text you must remember the last found position and continue searching from here - the function PosEx() in unit StrUtils is perfect for this purpose:
uses
StrUtils;
type
TForm1 = class(TForm)
private
FFoundPos: Integer;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
with FindDialog1 do
begin
if frEntireScope in Options then // Search begins at file start
FFoundPos := 0
else
FFoundPos := Memo1.SelStart; // Serach begins at current cursor position
Execute;
end;
end;
procedure TForm1.FindDialog1Find(Sender: TObject);
begin
with Sender as TFindDialog do
begin
FFoundPos := PosEx(FindText, Memo1.Lines.Text, FFoundPos+1);
if FFoundPos > 0 then
begin
Memo1.SelStart := FFoundPos - 1;
Memo1.SelLength := Length(FindText);
Memo1.SetFocus; // Memo1 must be activated, otherwise the selection effect will not be displayed
end else
Beep();
end;
end;See also
From the Free Pascal wiki, page "TFindDialog", as it stood on 2020-05-01 after a change by TyphonFinger, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
