Диалоговые блоки поиска и замены
Общие диалоговые окна поиска и замены позволяет вам искать и
возможно заменять текст в данных приложения. Эти диалоговые окна
обладают достаточной гибкостью и могут использоваться для документов и баз данных. Проще всего использовать эти диалоговые блоки с помощью классов редактируемых управляющих элементов TEditSearch и TEditFile. Они реализуют редактируемые управляющие элементы поиска и замены.
Так как диалоговые блоки поиска и замены являются безрежимными, указатель на них обычно сохраняется в элементах данных объекта родительского окна. Это облегчает связь с ними. Строит и
создавать блоки поиск и замены следует в ответ на команду (например, команду меню Search Finf и Search Replace). При этом выводится диалоговый блок, где пользователь может вводить информацию
поиска.
TFindReplaceDialog::TData имеет стандартные элементы данных
Flags, плюс элементы данных, содержащие строки поиска и замены.
Так как блоки поиска и замены являются безрежимными, они взаимодействуют с объектом родительского окна, используя зарегистрированное сообщение FINDMSGSTRING. Вы должны написать функцию реакции на это сообщение. Эта функция воспринимает два параметра WPARAM и LPARAM и возвращает LRESULT. Параметр LPARAM содержит указатель, который вы должны передавать функции-элементу UpdateData.
После вызова UpdateData нужно проверить FR_DIALOGTERM. Этот
флаг устанавливается, когда пользователь закрывает безрежимный
диалоговый блок. При этом ваша функция реакции на событие должна
обнулять указатель на объект диалогового блока, после чего вы можете строить и создавать этот объект снова.
Пока вы можете обновлять флаг FR_DIALOGTERM, вы может обрабатывать сообщение FINDMSGSTRING, выполняя фактический поиск. Это
может быть простой поиск в редактирующем управляющем элементе или
сложный поиск в таблице Paradox или dBASE.
Общие диалоговые блоки имеют командную кнопку Find Next
(найти следующий), которую пользователи могут активизировать при
выводе диалогового блока. Большинство приложений также имеют команду Find Next в меню Search, так что пользователь может найти
следующее вхождение за один шаг, не открывая диалогового блока.
Те же функциональные возможности предлагают TFindDialog и TReplaceDialog.