|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Авто прокрутка для ListView.....
Помогите с решить проблему с ListView-ом
Вопрос таков: как сделать что бы после поиска лист ListView покозал выбраную строчку.... а то оно находит виберает а прокрутить страничку до выбранной строчки не получается...помогите пожалуста решить проблему Будет лучше если напишете исходник...... ЗАРАНЕЕ БЛАГОДАРЮ |
#2
|
||||
|
||||
исходник писать лень, но вот из винапи:
SetScrollPos( HWND hWnd, // handle of window with scroll bar int nBar, // scroll bar flag int nPos, // new position of scroll box BOOL bRedraw // redraw flag ); если известно кол-во строк и номер этой строки, думаю проблем быть не должно, так же функция может понадобиться: GetScrollRange( HWND hWnd, // handle of window with scroll bar int nBar, // scroll bar flags LPINT lpMinPos, // address of variable that receives minimum position LPINT lpMaxPos // address of variable that receives maximum position ); |
#3
|
||||
|
||||
Дааа что то трудновато стало
Код:
for i:=0 to ListView1.Items.Count-1 do begin If pos(Edit1.text, ListView1.Items[i].Caption)>0 then ListView1.Selected:=ListView1.Items[i]; |
#4
|
||||
|
||||
если стиль Report то можно и так вроде
ListView1.Scroll(0, Num); //Num - номер выделенного эл-та |
#5
|
||||
|
||||
Я сделал вот что но не помогает
Код:
for i:=0 to ListView1.Items.Count-1 do begin If pos(Edit1.text, ListView1.Items[i].Caption)>0 then ListView1.Selected:=ListView1.Items[i]; ListView1.Scroll(0, i); |
#6
|
||||
|
||||
а так:
Код:
for i:=0 to ListView1.Items.Count-1 do begin If pos(Edit1.text, ListView1.Items[i].Caption)>0 then begin ListView1.Selected:=ListView1.Items[i]; ListView1.Scroll(0, i); end; |
#7
|
||||
|
||||
Тот же еффект. прокручивает до конца и все..
|
#8
|
||||
|
||||
бред. ну у мя в почти пустом проекте прокручивалось нормально вроде.
а когда прокручивается, что выделенный элемент оказывается уеханным вверх? |
#9
|
||||
|
||||
Цитата:
|
#10
|
||||
|
||||
тогда по сложному
Код:
var rct:TRECT; const LVM_GETITEMRECT=4110; LVIR_BOUNDS=0; ... for i:=0 to ListView1.Items.Count-1 do begin If pos(Edit1.text, 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)); ListView1.SetFocus; end; |
#11
|
||||
|
||||
Да вот эт другое дело но и тут есть но как пихать этот кодик в Edit1Change а то у меня что то не получается после ввода первой буквы оно остановливается и прихотится заного выбрать Edit1
|
#12
|
||||
|
||||
тогда убери ListView1.SetFocus; но теперь не будет видно, что элемент до которого прокручено выделен.
|
#13
|
||||
|
||||
СПАСИБО ОГРОМНОЕ ПОРОБУЮ!
|