Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория Win32 и Dialog.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
729.97 Кб
Скачать

Компонент Delphi FindDialog

Компонент Delphi FindDialog располагается на странице Dialogs Палитры компонентов. Он является стандартным диалогом поиска фрагмента текста. Его обычно применяют для реализации текстовых редакторов.

 Искомый фрагмент текста находиться в свойстве FindText. Основные параметры поиска интуитивно понятны.

Рисунок 45 – Пример использования компонента FindDialog

Поместим на форму кнопку и напишем на ней - "Найти", компонент Memo и  FindDialog. Напишем обработчик для кнопки:

FindDialog3.Execute;

Рисунок 46 – Задание обработчика свойства OnFind

Для диалога поиска создадим обработчик onFind:

procedure TForm3.FindDialog3Find(Sender: TObject);

begin

     if pos(FindDialog1.FindText, memo1.Text)<>0 then

        begin

          with Memo1 do begin

          HideSelection := False;

          SelStart := pos(FindDialog3.FindText, Text)-1;

          SelLength := Length(FindDialog3.FindText);

          end;

         end

         else

      ShowMessage('Строка '+FindDialog3.FindText+' не найдена!');

end;

Напишем какой либо текст в компоненте memo и нажмем кнопку "Найти". Введем в строку поиска слово. В начале которое есть в тексте, затем нажмем кнопку "Найти далее". Теперь напишем слово которого нет и увидим результат работы нашей программы.

Компонент Delphi ReplaceDialog

Компонент Delphi ReplaseDialog располагается на странице Dialogs Палитры компонентов. Данный компонент - этот диалог предназначен для замены текста, который расположен в поле Что (Find what)  на текст помещенный в поле Чем (Replace with). Данные поля имеют тип String и являются свойствами FindText и ReplaceText соответственно.

Компонент ReplaseDialog имеет общие свойства и методы компонента FindDialog. В дополнение к ним он имеет свойство ReplaceText (String) и метод OnReplace (тип TNotifyEvent) возникающий при клике на кнопки Replace и Replace All (отвечают за замену искомого фрагмента текста).

Внешний вид он имеет следующий:

Рисунок 47 – Пример использования компонента ReplaceDialog

Рисунок 48 – тестовый пример использования компонента ReplaceDialog

Для лучшего понимания работы по замене текста создадим такое приложение: на форма поместим компоненты Edit,  Button и ReplaseDialog. Разместим их как показано на рисунке. Напишем заголовки кнопки и формы. Затем создадим обработчик кнопки и обработчик замены текста.

Для кнопки:

procedure TForm1.Button1Click(Sender: TObject);

begin

ReplaceDialog1.Execute;

end;

Для замены текста с Помощью Инспектора объектов на вкладке Events компонента ReplaseDialog  создаем двойным щелчком событие OnReplace:

procedure TForm1.ReplaceDialog1Replace(Sender: TObject);

begin

while (pos(ReplaceDialog1.FindText,Edit1.Text) <> 0) do

begin

With Edit1 do begin

SelStart := pos(ReplaceDialog1.FindText,Edit1.Text)-1;

SelLength:= Length(ReplaceDialog1.FindText);

SelText := ReplaceDialog1.ReplaceText;

end;

// При необходимости одноразовой замены завершаем цикл

if not (frReplaceAll in ReplaceDialog1.Options) then Break;

end;

end;

Запустите приложение и произведите любого участка текста.