18.5.7. TFindDialog - диалог поиска

Стандартное диалоговое окно компонента TFindDialog используется для поиска фрагмента текста (рис. 18.43).

Свойства компонента:

property FindText: String;

Указывает образец для поиска

property Left: Integer;

Содержит горизонтальную позицию левого верхнего угла места появления окна

property Options: TFindOptions;

Определяет настройку диалога (см. ниже)

property Position: TPoint;

Содержит горизонтальную и вертикальную позицию левого верхнего угла места появления окна

property Top: Integer;

Содержит вертикальную позицию левого верхнего угла места появления окна

 Для компонента определен следующий тип, использующийся в свойстве options:

TFindOption = (frDown, frFindNext, frHideMatchCase, frHideWholeWord, frHideUpDown, frMatchCase, frDisableMatchCase, frDisableUpDown, frDisableWholeWord, frReplace, frReplaceAll, frWholeWord, frShowHelp) ;

TFindOptions = set of TFindOption;

Рис. 18.43 . Стандартное окно компонента TFindDialog

Его значения имеют следующий смысл:

frDown frFindNext

Устанавливает поиск вперед по тексту

frHideMatchCase

Сообщает программе, что пользователь нажал кнопку Найти далее Убирает выбор в переключателе с учетом регистра

frHideWholeWord

Убирает выбор в переключателе только слово целиком

frHideUpDown

Прячет кнопки выбора направления поиска

frMatchCase

Устанавливает выбор в переключателе с учетом регистра

frDisableMatchCase

Запрещает выбор С учетом регистра

frDisableUpDown

Запрещает выбор направления поиска

frDisableWholeWord

Запрещает выбор только слово целиком

frReplace

Используется в компоненте TReplacteDialog и указывает на необходимость замены текущего выбора

frReplaceAll

Используется в компоненте TreplaceDialog и указывает на необходимость замены всех вхождений образца поиска

frWholeWord

Устанавливает выбор в переключателе Только слово целиком.

frShowHelp

Включает в окно кнопку Help

 Спецификой диалога является реализуемая им возможность просмотра найденного фрагмента и при необходимости продолжение поиска. С этой целью для компонента определено событие OnFind:

TNotifyEvent, которое возникает всякий раз, когда пользователь нажимает кнопку найти далее. Обработчик события должен найти образец в тексте и показать его пользователю. Пусть, например, компонент Memol содержит отыскиваемый фрагмент и поиск идет с учетом регистра. Тогда обработчик может иметь такой вид:

procedure TFormI.FindDialoglFind(Sender: TObject);

var

SelPos: Integer;

begin

with TFindDialog(Sender) do

begin

// Ищем фрагмент в тексте

SelPos := Pos(FindText, Memol-Lines.Text);

if SelPos > 0 then

begin // Фрагмент найден - выделяем его

Memol.SelStart := SelPos - 1;

Memol.SelLength := Length(FindText);

end

else

ShowMessage ('Текст "' + FindText + '"не найден')

end;

end;