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.
Рассмотрим в качестве примера следующую процедуру:
- procedure TForm1.FindDialog1Find(Sender: TObject);
- begin
- if pos(FindDialog1.FindText, Memo1.Text) <> 0 then
- begin
- Memo1.HideSelection := False;
- Memo1.SelStart := pos(FindDialog1.FindText, Memo1.Text) — 1;
- Memo1.SelLength := Length(FindDialog1.FindText);
- end else MessageDlg ('Строка ' + FindDialog1.FindText + ' не найдена!', mtConfirmation, [mbYes], 0);
- 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 удобно использовать как процедуру.
2 комментария к “FindDialog и ReplaceDialog — диалоговые окна поиска и замены текста”
А скачивать компоненты с вашего сайта нельзя?
В частности данный компонент — стандартный и он уже должен быть встроен в Дельфи. А какие компоненты вы ищите? Дело в том, что надо для себя определиться с перечнем компонентов на разработку программы. Иначе потом могут возникнуть проблемы, связанные с тем, что Ваша подготовленная среда не подходит для компиляции проекта. Например, если вы поддерживаете несколько разработок.