Хотите прямо сейчас получить бесплатный видеокурс по программированию для начинающих?

Поиск в memo (delphi)

Июнь 29, 2013

Untitled-2 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/



2 Комментариев к записи Поиск в memo (delphi)

  1. Андрей on 03.07.2013 at 22:58

    Главное что поиск ищет не один раз!Я когда-то сам такое реализовывал,правда код вышел больше.А здесь код короткий.Урок отличный!Автору спасибо огромное!

  2. Kramarty on 01.01.2016 at 00:51

    Идиотский поиск!
    Мне нужно найти слово а, а эта искалка ищет букву а.
    Какой нормальный пацан станет искать букву в словах?
    Тупо и безмозгло!

Добавить комментарий для Андрей Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Поддержите проект

Хит продаж:

Случайный анекдот

Моя вторая книга

Что это???

Программирование для Android:

Мы вконтакте

Помощь сайту

Понравился сайт? Он сильно нуждается в раскрутке.

Чтобы помочь в раскрутке - опубликуйте ссылку на сайт (или любую его страницу) на любом другом сайте в интернете. Тогда сайт станет чуточку популярнее.

Или просто нажмите на кнопки социальных сетей которые стоят в конце каждой статьи

Вместе мы сможем сделать программирование более популярным и более понятным для всех!

Заранее спасибо!
Артём Кашеваров.