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;