RAD Studio VCL Reference
|
Determines the appearance and behavior of the Find dialog.
property Options: TFindOptions;
__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!
|