|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | 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  
			
			
			
			
		 | ||||
| 
 | ||||
|   СПАСИБО ОГРОМНОЕ ПОРОБУЮ! |