![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как пролистать ListView до нужной позиции? [D7, WinXP]
tytus © (2007-03-03 12:21:00)BoДоброго дня Всем! Имеется ListView (он же LV1) со сотилем vsReport. В поле Edit ввожу текст, и в обработчику пишу:
procedure TRepParamsFm.Edit1Change(Sender: TObject);
var
LF:LV_FINDINFO;
ps:PChar;
len:integer;
res:integer;
begin
len:=Length(Trim(Edit1.Text));
if len=0 then exit;
len:=len+1;
GetMem(ps,len);
StrPCopy(ps,Edit1.Text);
LF.psz:=ps;
LF.flags:=LVFI_PARTIAL or LVFI_STRING;
res:=SendMessage(LV1.Handle,LVM_FINDITEM,-1,Integer(@LF));
FreeMem(ps);
SB1.Panels[0].Text:=IntToStr(Res);
end;
Вот такой простой поиск нужного элемента по строке. Как теперь мне пролистать ListView, чтобы был виден найденный элемент (его индекс находится в переменной res), как это поисходит в ListBox-e, при посылке LB_FINDSTRING????
REA (2007-03-03 16:27:00) [1]HideSelection := False
tytus (2007-03-03 13:28:00) [2]MBo, REA,Спасибо.
А как сделать, чтобы элемент списка был выделенным, но сохранилась возможность дальнейшего ввода текста в Edit-e?
LV1.ItemIndex:=res;
LV1.Items[res].MakeVisible(true);
Затем, чтобы данный элемент стал выделенным, нужно выполнить
LV1.SetFocus;
И все - эдит теряет фокус ввода. Ежели после LV1.SetFocus; передать фокус ввода эдиту - то элемент списка перестает бытьт выделенным. Как быть...???
REA (2007-03-03 13:07:00) [3]Item.MakeVisible
MBo (2007-03-03 13:05:00) [4]MakeVisible
tytus (2007-03-03 12:55:00) [5]>Loginov Dmitry © (03.03.07 12:40) [1]
LV1.ItemIndex:=res;
LV1.focused;
не помогает, и не прокручивает список.
Loginov Dmitry (2007-03-03 12:40:00) [6]ItemIndex
Focused