Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Прокрутка контролов программно Добавлено: 26.03.04 16:39  

Автор вопроса:  Comanche

Есть TreeView с вертикальным скролл-баром. При нажатии на кнопки этого скролл-бара дерево прокручивается на одну "линию" - т.е. на высоту одного своего элемента (узла). То же можно сказать и о других контролах - о ListBox'е и т.д.

Если я программно прокручиваю дерево, посылая сообщение WM_VSCROLL, то у меня в распоряжении самый маленький шаг - это SB_LINEUP (SB_LINEDOWN), т.е. опять-таки "прокрутка в одну линию".

Мне бы хотелось изменить ситуацию и программно прокрутить дерево (или иной контрол, имеющий скролл-бар) с минимально возможным шагом - в 1 пиксель. Однако, я упёрся в то, что не знаю, какое сообщение нужно послать дереву. Да и не совсем я уверен, что задача решится именно с помощью посылки сообщения. Возможно, нужно как-то "поиграться" с API-функциями SetScrollInfo и т.п., - но увы, чё-то у меня этот путь оказался тупиковым (не смог разобраться самостоятельно).

Допустим также, что я делаю сабклассинг дерева и перехватываю все сообщения WM_VSCROLL. Ну а дальше что с ними делать?! Тоже не смог разобраться!

Так что очень нужна помощь сообщества VBNET!

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 27.03.04 21:07

А ты где-нибудь такое видел? ListBox, тот вообще не разрешает ему поставить любой Height, округляет по высоте столбца...

Ответить

Номер ответа: 2
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #2 Добавлено: 30.03.04 11:28
Не только видел, но когда-то и делал. Только код утерян :((

Ответить

Номер ответа: 3
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #3 Добавлено: 30.03.04 17:27

Попробуй через ScrollDC :)

Ответить

Номер ответа: 4
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #4 Добавлено: 30.03.04 17:57
ScrollDC "крутит" только картинку, - но не содержимое контрола!

Ответить

Номер ответа: 5
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #5 Добавлено: 31.03.04 12:12

Разумеется. Зато может и на один пиксел. Как и ScrollWindow.

А по-другому ListBox не даст. Можно, конечно, прокрутить на несколько пикселов окошко листбокса, а затем провернуть сам контрол... Других методов я не знаю...

Что касается сообщений - тут трудно не знать, их не так много на самом деле.

У меня получилось плавно скроллить, но последняя строка все равно выскакивала резво. Разве что сделать на одну строку больше и закрыть её каким-нибудь контролом, но это, ИМХО, дурость...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам