Заходит как то программист в комп.магазин долго ходил смотрел всё высматривал потом подходит к продавщице и просит посмотреть каталог, потом минуту спустя спрашивает:
- Извинити это у вас цены или номера ICQ???
// Call FindCaption Method to search for a list view item labeled by the // string specified as the Value parameter // Syntax: function FindCaption(StartIndex: Integer; Value: string;
Partial, Inclusive, Wrap: Boolean): TListItem;
// Example, Beispiel: procedure TForm1.Button1Click(Sender: TObject);
var
lvItem: TListItem;
begin
lvItem := ListView1.FindCaption(0, // StartIndex: Integer;
'99', // Search string: string; True, // Partial, True, // Inclusive False); // Wrap : boolean; if lvItem <> nilthenbegin
ListView1.Selected := lvItem;
lvItem.MakeVisible(True);
ListView1.SetFocus;
end;
end;
// To search for a list view subitem (also for items), use this function: {
Search for text in a listview item
@Param lv is the listview, supposed to be in vaReport mode
@Param S is the text to search for
@Param column is the column index for the column to search , 0-based
@Returns the found listview item, or Nil if none was found
@Precondition lv nil, lv in report mode if column 0, S not empty
@Desc The search is case-insensitive and will only match on the
complete column content. Use AnsiContainsText instead of AnsiCompareText
to match on a substring in the columns content.
Created 14.10.2001 by P. Below
}function FindListViewItem(lv: TListView; const S: string; column: Integer): TListItem;
var
i: Integer;
found: Boolean;
begin
Assert(Assigned(lv));
Assert((lv.viewstyle = vsReport) or (column = 0));
Assert(S <> '');
for i := 0 to lv.Items.Count - 1 dobegin
Result := lv.Items[i];
if column = 0 then
found := AnsiCompareText(Result.Caption, S) = 0
elseif column > 0 then
found := AnsiCompareText(Result.SubItems[column - 1], S) = 0
else
found := False;
if found then
Exit;
end;
// No hit if we get here
Result := nil;
end;
// Example call: procedure TForm1.Button1Click(Sender: TObject);
var
lvItem: TListItem;
begin// Search subitem[0] for text from edit1 // in der Spalte subitem[0] den Text aus Edit1 suchen
lvItem := FindListViewItem(ListView1, Edit1.Text, 1);
// if found, then show the item // falls item gefunden, dann anzeigen if lvItem <> nilthenbegin
ListView1.Selected := lvItem;
lvItem.MakeVisible(True);
ListView1.SetFocus;
end;
end;
// Function to search items and select if found procedure LV_FindAndSelectItems(lv: TListView; const S: string; column: Integer);
var
i: Integer;
found: Boolean;
lvItem: TListItem;
begin
Assert(Assigned(lv));
Assert((lv.ViewStyle = vsReport) or (column = 0));
Assert(S <> '');
for i := 0 to lv.Items.Count - 1 dobegin
lvItem := lv.Items[i];
if column = 0 then
found := AnsiCompareText(lvItem.Caption, S) = 0
elseif column > 0 thenbeginif lvItem.SubItems.Count >= Column then
found := AnsiCompareText(lvItem.SubItems[column - 1], S) = 0
else
found := False;
endelse
found := False;
if found thenbegin
lv.Selected := lvItem;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
lvItem: TListItem;
begin// in der Spalte subitem[0] den Text aus Edit1 suchen
LV_FindAndSelectItems(ListView1, Edit1.Text, 1);
ListView1.SetFocus;
end;
Программный пример на языке Delphi, демонстрирующий поиск текста в контроле TListView и выбор найденного элемента.
Метод FindCaption используется для поиска элемента с конкретным заголовком, а функция FindListViewItem - для поиска элемента на основе его подэлемента. Процедура LV_FindAndSelectItems является более сложной версией, которая позволяет искать элементы в нескольких столбцах.
Этот метод ищет элемент с указанным заголовком, начиная с указанного индекса (StartIndex). Параметры Partial, Inclusive и Wrap контролируют поведение поиска.
Эта функция ищет элемент в указанном контроле lv на основе его подэлемента с указанным столбцом (column). Поиск выполняется без учета регистра и только для полного содержимого столбца.
В целом, эти код-наборы демонстрируют поиск текста в контроле TListView с помощью различных методов и выбор найденного элемента. Метод FindCaption используется для поиска элемента с конкретным заголовком, а функция FindListViewItem и процедура LV_FindAndSelectItems - для поиска элементов на основе их подэлементов.
Искать текст в TListView: функции и примеры поиска текста в элементах списка с помощью Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.