FindDialog и ReplaceDialog — диалоговые окна поиска и замены текста

Для организации стандартного диалогового окна Find (Найти) (см. скриншот) предназначен компонент FindDialog, который служит для ввода текстовой информации в строку Find what (Строка поиска). Введенная строка является значением свойства FindText типа String.



Кодирование операций, связанных собственно с поиском строки, осуществляется программистом. Для этого используется событие onFind типа TNotifyEvent, возникающее при нажатии кнопки Find Next (Найти далее). Действия, связанные с поиском текста, должны выполняться внутри процедуры-обработчика этого события. Диалоговое окно Find в принципе можно использовать и просто для ввода в программу текстовой информации (значение свойства FindText), хотя для этого есть более удобные средства и способы, например функция InputBox или однострочный редактор Edit.

Параметрами диалога управляет свойство Options типа TFindOptions, которое может принимать следующие значения (поскольку практически все значения этого параметра для компонента FindDialog и компонента ReplaceDialog, рассмотренного ниже, аналогичны, здесь приведены и значения, связанные с заменой текста):

  • frDisableMatchCase, frDisableWholeWord, frDisableUpDown — снимают флажки Match case (Учитывать регистр), Match whole word only (Совпадение только по целым словам) и переключатели Direction (Направление поиска) соответственно;
  • frDown — активизирует переключатель Down (Вниз) при открытии диалога;
  • frFindNext — устанавливается при нажатии кнопки Find Next и сбрасывается при закрытии диалога;
  • frHideMatchCase, frHideWholeWord, frHideUpDown — удаляют из диалога флажки Match case, Match whole word only и переключатели Direction соответственно;
  • frMatchCase — включается при установке флажка Match case;
  • frReplace (для ReplaceDialog) — указывает на необходимость заменить текущее вхождение строки FindText строкой ReplaceText;
  • frReplaceAll (для ReplaceDialog)— указывает, что необходимо заменить все вхождения строки FindText строкой ReplaceText;
  • frShowHelp — отображает кнопку Help;
  • frWholeWord — включается при установке флажка Match whole word only.

Рассмотрим в качестве примера следующую процедуру:

  1. procedure TForm1.FindDialog1Find(Sender: TObject);
  2. begin
  3. if pos(FindDialog1.FindText, Memo1.Text) <> 0 then
  4. begin
  5. Memo1.HideSelection := False;
  6. Memo1.SelStart := pos(FindDialog1.FindText, Memo1.Text)1;
  7. Memo1.SelLength := Length(FindDialog1.FindText);
  8. end else MessageDlg ('Строка ' + FindDialog1.FindText + ' не найдена!', mtConfirmation, [mbYes], 0);
  9. end;

При нажатии кнопки Find Next диалога FindDialog1 в тексте редактора Memo1 ищется первое появление строки, заданной для поиска (FindDialog1.FindText). При успешном поиске найденный текст выделяется, в противном случае выдается сообщение об отсутствии искомой строки. Чтобы найденный текст в компоненте Memo1 был выделен цветом, перед выделением искомой строки свойству HideSelection присваивается значение False.

Компонент ReplaceDialog

Компонент ReplaceDialog организует стандартное диалоговое окно Replace (см. скриншот), предназначенное для ввода текстовой информации в строки Find what (Найти) и Replace with (Заменить на). Введенные строки являются значениями свойств FindText и ReplaceText типа String соответственно.

Диалоговое окно поиска и замены строк в Delphi реализуется компонентом ReplaceDialog, который аналогичен компоненту FindDialog, но имеет дополнительное свойство ReplaceText типа String и событие OnReplace типа TNotifyEvent, возникающее при нажатии кнопок Replace и Replace All. Связанные с поиском и заменой текста действия должны выполняться в обработчике этого события.

Реализуемые компонентами FindDialog и ReplaceDialog диалоговые окна являются немодальными и после их активизации методом Execute могут оставаться в неактивном состоянии одновременно с другими окнами. В связи с этим метод Execute удобно использовать как процедуру.

Если Вам интересна эта запись, Вы можете следить за ее обсуждением, подписавшись на RSS 2.0 .

2 комментария к “FindDialog и ReplaceDialog — диалоговые окна поиска и замены текста”

  • Артём
    26 марта, 2012, 8:31

    А скачивать компоненты с вашего сайта нельзя?

  • Сергей Бойко
    20 декабря, 2012, 20:36

    В частности данный компонент — стандартный и он уже должен быть встроен в Дельфи. А какие компоненты вы ищите? Дело в том, что надо для себя определиться с перечнем компонентов на разработку программы. Иначе потом могут возникнуть проблемы, связанные с тем, что Ваша подготовленная среда не подходит для компиляции проекта. Например, если вы поддерживаете несколько разработок.

Оставить комментарий или два

*