Поиск в memo (delphi)
Memo потрясающий по своей простоте и удобности компонент! Но далеко не все осознают его мощь.
Сегодня я хочу научить вас делать поиск по этому компоненту.
На многих сайтах видел подобные статьи с примерами, но меня не устраивал всегда один нюанс: поиск всегда производился всего один раз, без возможности реализации кнопки «найти след.» Давайте сделаем нормальный поиск по компоненту Memo:
Кидаем на форму компоненты Memo1, Button1, Edit1
Для начала нам понадобятся несколько вспомогательных, глобальных переменных:
1 2 3 4 | var s:string; //В этой переменной мы будем производить поиск, в ней же будем обрезать текст p:integer; //Здесь будут храниться координаты найденного куска текста i:integer; //Количество обрезанных символов |
В обработчике нажатия Button1 пишем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | if p=0 then begin i:=0; //если поиска еще не было то заполняем переменные начальными для поиска значениями s:= Memo1.Text ; // переносим весь текст в переменную в которой будем производить поиск end; p:= pos(edit1.Text,s); //ищем строку в переменной s if p<>0 then //если строка найдена то делаем begin //три следующие строчки - выделяем найденный текст Memo1.SetFocus(); memo1.SelStart:=p+i-1; memo1.SelLength:=length(edit1.text); i:=i+p+length(edit1.Text)-1; //заполняем i новыми данными об обрезанном количестве символов s:= copy(s,p+length(edit1.Text),length(s)); //обрезаем строковую переменную чтобы исключить повторные нахождения одного и того же элемента end else showmessage('поиск закончен'); |
Чтобы не было лишних багов при любом изменении Edit1 нужно обнулять переменную p. Я делаю это в событии OnKeyDown:
1 | p:=0; |
Вот и все, удачки вам)
P.S. Если хотите постичь все фишки работы с Delphi, то возможно стоит задуматься о приобретении моего курса по Delphi — progdelphi.ru/
Понравилась статья? Жми: | Поделиться в соц. сетях |
Главное что поиск ищет не один раз!Я когда-то сам такое реализовывал,правда код вышел больше.А здесь код короткий.Урок отличный!Автору спасибо огромное!
Идиотский поиск!
Мне нужно найти слово а, а эта искалка ищет букву а.
Какой нормальный пацан станет искать букву в словах?
Тупо и безмозгло!