RAD Studio VCL Reference
ContentsIndex
PreviousUpNext
TFindDialog.Options Property

Determines the appearance and behavior of the Find dialog.

Pascal
property Options: TFindOptions;
C++
__property TFindOptions Options;

Use Options to 

Determine which controls in the dialog are disabled (grayed). 

Determine which controls do not appear in the dialog. 

Specify settings for the search direction, case-sensitivity, and "whole word" attributes of the search. 

By default, all options except frDown are off.  

C++ Examples: 

 

/*
This example requires a TRichEdit, a TButton, and a 
TFindDialog.  Clicking the button will display a Find
Dialog to the right of the edit control.  Filling in the 
"Find what" text and pressing the Find Next button will
select the first matching string in the Rich Edit control 
that follows the previous selection. Notice that the
"Match whole word only" and "Match case" work.
*/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  FindDialog1->Position = Point(RichEdit1->Left + RichEdit1->Width, RichEdit1->Top);
  FindDialog1->Execute();
}

void __fastcall TForm1::FindDialog1Find(TObject *Sender)
{
  int FoundAt, StartPos, ToEnd;
  TSearchTypes mySearchTypes = TSearchTypes();
  // begin the search after the current selection
  // if there is one
  // otherwise, begin at the start of the text
  if (FindDialog1->Options.Contains(frMatchCase))
    mySearchTypes << stMatchCase;
  if (FindDialog1->Options.Contains(frWholeWord))
    mySearchTypes << stWholeWord;
  if (RichEdit1->SelLength)
    StartPos = RichEdit1->SelStart + RichEdit1->SelLength;
  else
    StartPos = 0;
  // ToEnd is the length from StartPos
  // to the end of the text in the rich edit control
  ToEnd = RichEdit1->Text.Length() - StartPos;
  FoundAt = RichEdit1->FindText(FindDialog1->FindText, StartPos, ToEnd, mySearchTypes);
  if (FoundAt != -1)
  {
    RichEdit1->SetFocus();
    RichEdit1->SelStart = FoundAt;
    RichEdit1->SelLength = FindDialog1->FindText.Length();
  }
  else Beep();
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  RichEdit1->PlainText = False;
  RichEdit1->Lines->LoadFromFile("../Overview.RTF");  // starts in Debug
  RichEdit1->ScrollBars = ssVertical;
}
/*
The following code calls the user-defined routine DoReplace
if the Replace button was clicked, or calls the user-defined
routine DoReplaceAll if the Replace All button was clicked.
Place a TReplaceDialog, a TButton and a TRichEdit in the form.
*/
void __fastcall TForm1::ReplaceDialog1Replace(TObject *Sender)
{
  TReplaceDialog *dlg = dynamic_cast<TReplaceDialog *>(Sender);
  if (dlg->Options.Contains(frReplace))
    DoReplace(dlg->FindText, dlg->ReplaceText);
  else if (dlg->Options.Contains(frReplaceAll))
    DoReplaceAll(dlg->FindText, dlg->ReplaceText);
}

void __fastcall TForm1::DoReplace(AnsiString FindText, AnsiString ReplaceText)
{
  ShowMessage(
    "DoReplace: FindText: " + ReplaceDialog1->FindText +
    " ReplaceText: " + ReplaceDialog1->ReplaceText);
};

void __fastcall TForm1::DoReplaceAll(AnsiString FindText, AnsiString ReplaceText)
{
  ShowMessage(
    "DoReplaceAll: FindText: " + ReplaceDialog1->FindText +
    " ReplaceText: " + ReplaceDialog1->ReplaceText);
};

 

Delphi Examples: 

{
This example requires a TRichEdit, a TButton, and a 
TFindDialog.  Clicking the button click will display a Find 
Dialog to the right of the edit control.  Filling in the 
"Find what" text and pressing the Find Next button will 
select the first matching string in the Rich Edit control 
that follows the previous selection.
}
procedure TForm1.Button1Click(Sender: TObject);
begin
  FindDialog1.Position := 
    Point(RichEdit1.Left + RichEdit1.Width, RichEdit1.Top);
  FindDialog1.Execute;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
  mySearchTypes : TSearchTypes;
  myFindOptions : TFindOptions;
begin
  mySearchTypes := [];
  with RichEdit1 do
  begin
    if frMatchCase in FindDialog1.Options then
       mySearchTypes := mySearchTypes + [stMatchCase];
    if frWholeWord in FindDialog1.Options then
       mySearchTypes := mySearchTypes + [stWholeWord];
    { begin the search after the current selection if there is one }
    { otherwise, begin at the start of the text }
    if SelLength <> 0 then
      StartPos := SelStart + SelLength
    else
      StartPos := 0;
    { ToEnd is the length from StartPos to the end of the 
      text in the rich edit control }
    ToEnd := Length(Text) - StartPos;
    FoundAt := 
      FindText(FindDialog1.FindText, StartPos, ToEnd, mySearchTypes);
    if FoundAt <> -1 then
    begin
      SetFocus;
      SelStart := FoundAt;
      SelLength := Length(FindDialog1.FindText);
    end
    else Beep;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
const Path = 'OverView.RTF';
begin
  RichEdit1.PlainText := False;
  RichEdit1.Lines.LoadFromFile(Path);
  RichEdit1.ScrollBars := ssVertical;
end;
{
The following code calls the user-defined routine DoReplace
if the Replace button was clicked, or calls the user-defined
routine DoReplaceAll if the Replace All button was clicked.
Place a TReplaceDialog, a TButton and a TRichEdit in the form.
} 
procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
// var FindText, ReplaceText: String;
begin
  with Sender as TReplaceDialog do
  begin
  if frReplace in Options then
    DoReplace(ReplaceDialog1.FindText, ReplaceDialog1.ReplaceText)
  else if frReplaceAll in Options then
    DoReplaceAll(ReplaceDialog1.FindText, ReplaceDialog1.ReplaceText);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ReplaceDialog1.Execute;
end;

procedure TForm1.DoReplace(FindText, ReplaceText: String);
begin
  ShowMessage(
    'DoReplace: FindText: ' + ReplaceDialog1.FindText +
    ' ReplaceText: ' + ReplaceDialog1.ReplaceText);
end;

procedure TForm1.DoReplaceAll(FindText, ReplaceText: String);
begin
  ShowMessage(
    'DoReplaceAll: FindText: ' + ReplaceDialog1.FindText +
    ' ReplaceText: ' + ReplaceDialog1.ReplaceText);
end;

procedure TForm1.FormCreate(Sender: TObject);
const Path = 'OverView.RTF';
begin
  RichEdit1.PlainText := False;
  RichEdit1.Lines.LoadFromFile(Path);
  RichEdit1.ScrollBars := ssVertical;
end;

 

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!