Примеры программ Delphi (Lazarus).Объект Memo - поиск в тексте |
Для поиска слова или строки в тексте, написанном в объекте Memo, следует создать поисковую процедуру. Как создавать блокнот мы проходили на предыдущих уроках. Можно использовать готовый блокнот из урока или создать небольшой проект, как показано на рисунке: Далее, следует удалить все заголовки компонентов и кнопке присвоить заголовок "Найти". Используя свойство Lines объекта Memo можно вставить какой нибудь тестовый текст в блокнот: Изготовив, таким образом, интерфейс программы следует, двойным щелчком на кнопке "Найти", создать обработчик события: // Процедура поиска в тексте procedure TForm1.Button1Click(Sender: TObject); begin end; Прежде чем заполнять процедуру следует добавить в раздел Uses модуль StrUtils, который предназначен для работы с текстом и строками. Затем, объявить глобальную переменную, например, с именем poz и типом integer. Эта переменная будет хранить в себе позицию курсора в тексте. И, наконец, следует заполнить процедуру поиска: var //Глобальные переменные Form1: TForm1; poz: integer; implementation {$R *.dfm} // Процедура поиска в тексте procedure TForm1.Button1Click(Sender: TObject); var find: string; // строка которую нужно найти в тексте s: string; // в эту строку будет копироваться текст из Memo begin {для того чтобы регистр символов не влиял на поиск слова, преобразуем текст и поисковое слово к нижнему регистру. Если предполагается поиск с учётом регистра, то функцию AnsiLowerCase можно не использовать} find:= AnsiLowerCase(edit1.text); s:= AnsiLowerCase(memo1.Text); {Производим поиск совпадения слова в тексте с позиции poz. Позиция определяется положением курсора в тексте} poz:= posex(find,s,poz); // Если совпадение есть, то poz <> 0 if poz<>0 then begin memo1.SetFocus; memo1.SelStart:= poz-1; // Ставим курсор в найденную позицию memo1.SelLength:= length(find); // Определяем длину поискового слова poz:= memo1.SelStart + length(find); // Выделяем найденное слово в тексте end else // Если поиск завершён, то выдаём сообщение и устанавливаем курсор в начало текста begin showmessage('Поиск завершён!'); poz:= 1; end; end; Если программа написана без ошибок, то поиск осуществляется по всему тексту без учёта регистра символов. |
|