![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Не могу понять как искать определёный текст в listview, единственное что нашёл так это вот http://www.delphisources.ru/pages/fa...arch_text.html, но не работает
![]() |
|
#2
|
||||
|
||||
|
Проверил код работает как часы
Последний раз редактировалось Electronic_Arts, 27.10.2010 в 19:37. |
|
#3
|
||||
|
||||
|
Вот держи рабочий вариант
Код:
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 do
begin
lvItem := lv.Items[i];
if column = 0 then
found := AnsiCompareText(lvItem.Caption, S) = 0
else if column > 0 then
begin
if lvItem.SubItems.Count >= Column then
found := AnsiCompareText(lvItem.SubItems[column - 1], S) = 0
else
found := False;
end
else
found := False;
if found then
begin
lv.Selected := lvItem;
end;
end;
end;Код:
var
rct:TRECT;
i: integer;
const LVM_GETITEMRECT=4110; LVIR_BOUNDS=0;
begin
for i:=0 to ListView1.Items.Count-1 do
begin
If pos('Текст', ListView1.Items[i].Caption)>0 then
begin
ListView1.Selected:=ListView1.Items[i];
rct.Left:=0;
SendMessage(ListView1.Handle,LVM_GETITEMRECT,0,integer(@rct));
ListView1.Scroll(0,(i-ListView1.TopItem.Index)*(rct.Bottom-rct.Top));
end;
end; |