Есть ListView, в нем 4 столбца. Как сделать так, чтобы при вводе в Edit1 например "Вася", происходил поиск по 3-му столбцу и в ListView оставались только те записи, где присутствует это слово. Гуглил, ничего толкового не нашел.. Может есть у кого примерчик?
Нашел процедуру, которая выделяет в списке найденные элементы: Возникли вопросы: 1. При поиске например слова "Вася", процедура выделяет строку где есть только это слово. Т.е. если строка имеет текст "Вася Пупкин", то процедура эту строку не находит... Как исправить? 2. Как переделать эту процедуру, чтобы в ListVIew строки НЕ ВЫДЕЛЯЛИСЬ, а ОСТАВАЛИСЬ. Т.е. если найдено - в ListView остаются только найденные элементы. ???
Функция AnsiCompareText сравнивает на равенство. А тебе нужно определить, входит ли в первый аргумент второй.
нет. в ListView есть стандартная ф-ция поиска: Code: function FindCaption(StartIndex: Integer; Value: string; Partial, Inclusive, Wrap: Boolean): TListItem; Вот пример ее использования: Code: procedure TForm1.Button1Click(Sender: TObject); var lvItem: TListItem; begin lvItem := ListView1.FindCaption(2, // StartIndex: Integer; Edit1.Text, // Search string: string; True, // Partial, True, // Inclusive False); // Wrap : boolean; if lvItem <> nil then begin ListView1.Selected := lvItem; lvItem.MakeVisible(True); ListView1.SetFocus; end; end; Только не пойму, не работает она почему-то (хотя брал из оф.источника).. Как ее переделать так чтобы чтобы поиск (по вхождению) был по второму столбцу и если найдено - в ListView оставались только найденные элементы???
а смысл этой функции, что ты написал последней, если я тебе написал как переделать предыдущую функцию
Я думаю через стандартную функцию поиска в ListView было бы быстрее, чем через pos. Всё таки в ListView у меня не пару строчек текста.