![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Требуется создать ListBox [D7, Win2k, WinXP]
Nick Denry © (2005-09-14 00:00:00)с графической (т.е. ownerdraw) полосой прокрутки (сам листбокс тоже должен быть ownerdraw) либ создать графическую полосу прокруки, с помощью которой можно будет управлять таким листбоксом.
Nick Denry (2005-09-15 22:44:00) [1]
> Хочется просто поговорить - лучше в потрепаловке.
>
см. Nick Denry © (15.09.05 19:04) [15]
> ну вообщем можешь пока не отвечать
:) без обид.
Игорь Шевченко (2005-09-15 20:57:00) [2]
> Ну а смотреть листбокс или скроллбарс?
Смотреть очевидно обработку оконных сообщений. Перечень сообщений в этой ветке даден. Хочется просто поговорить - лучше в потрепаловке.
Nick Denry (2005-09-15 19:04:00) [3]Ну а смотреть листбокс или скроллбарс?
В листбоксе я ничего похожего не нашел, ну вообщем можешь пока не отвечать, я покопаюсь, потом буду спрашивать детали.
Но я что -то склоняюсь к варианту Nick Denry © (14.09.05 19:53) [3],
т.е. листбокс по факту вообще не будет иметь полосы прокрутки, просто данные будут грузится порциями и отоборажаться так же...
а может и по-нормальному сделаю....
Игорь Шевченко (2005-09-15 17:39:00) [4]Nick Denry © (15.09.05 17:36) [13]
> В какую сторону копать?
Обычно вглубь. В смысле в MSDN. В данном и конкретном случае следует поискать в тырнете аналоги того, что ты хочешь сделать и оценить трудоемкость работы.
Nick Denry (2005-09-15 17:36:00) [5]Хочу, только я собственно не пойму, чего я собственно не понимаю :(
В какую сторону копать?
Игорь Шевченко (2005-09-15 17:23:00) [6]Nick Denry © (15.09.05 16:06) [11]
Ты матчасть поизучать не хочешь ?
Nick Denry (2005-09-15 16:06:00) [7]а.......
т.е. тогда из листбокса надо будет управлять своим "скроллбаром"?
Игорь Шевченко (2005-09-15 15:33:00) [8]
> Я хотел спросить, нельзяли создать _СВОЙ_ контрол внешним
> видом напоминающий скроллбар, и с его помощью управлять
> прокруткой содержимого листбокса?
Так ListBox своим поведением тоже влияет на свой Scrollbar
Nick Denry (2005-09-15 12:48:00) [9]Игорь Шевченко © (15.09.05 11:19) [7]
Вообще я немого не это имел ввиду.
Я хотел спросить, нельзяли создать _СВОЙ_ контрол внешним видом напоминающий скроллбар, и с его помощью управлять прокруткой содержимого листбокса?
(если нет, то буду пытаться перерисовывать стандартные скроллбары)
Nick Denry (2005-09-15 12:04:00) [10]надо попробовать
Игорь Шевченко (2005-09-15 11:19:00) [11]Nick Denry © (14.09.05 23:52) [5]
Скроллбары есть часть неклиентской области окна. Соответственно, для того, чтобы их рисовать, нужно обрабатывать все сообщения неклиентской области и обрабатывать их корректно. Стоит ли овчинка выделки - решать тебе.
wicked (2005-09-15 00:09:00) [12]вот, примерный список:
WM_NCCALCSIZE
"размечаем" неклиентскую область окна, нужно для того, чтобы скроллеры были любого желаемого размера....
WM_NCPAINT
рисуем скроллеры и всё остальное, что необходимо...
WM_PAINT
аналогично....
WM_SIZE
пересчитываем размеры скроллеров....
WM_STYLECHANGED
WM_STYLECHANGING:
ловим стили окна, отвечающие за появление/исчезновение скроллеров
WM_NCHITTEST:
возвращаем, где находится мышь....
WM_NCLBUTTONDOWN:
WM_NCLBUTTONDBLCLK:
WM_NCLBUTTONUP:
управление прокруткой....
WM_LBUTTONUP:
аналогично...
WM_NCMOUSEMOVE:
следим за мышью.... в принципе, можно было обойтись и WM_NCHITTEST, но зачем-то я обрабатывал и это сообщение
WM_MOUSEMOVE:
аналогично...
WM_HSCROLL:
WM_VSCROLL:
обрабатываем команды на прокрутку....
Nick Denry (2005-09-14 23:52:00) [13]Нужно.
А я вот еще чего подумал, а нельзяли обойтись простой пересылкой сообщений WM_VSCROLL и WM_HSCROLL (правда горизонтальный скроллинг мне не нужен)
из своего контрола, имитирующего скроллбар?.
wicked (2005-09-14 22:50:00) [14]да возможно, сам писал... тока кода не дам, ибо на билдере, да и вылизывать его еще долго и долго... но скроллеры железно рисовал....
ежели интересно, нужно поискать в инете статьи/демки по ключевому слову coolsb - я как раз ними пользовался, когда писал это всё...
если нужно, могу расписать, какие сообщения необходимо обрабатывать...
Nick Denry (2005-09-14 19:53:00) [15]А, что разве это не возможно?
Я хочу пропробовать такой вариант (не совсем скроллбар, но все же):
2 кнопки : стрелка вверх, стрелка вниз.
В листбокс загружаются первые n элементов, при нажатии стрелки вниз на место этих элементов загружаются элементы с n по n+n и т.д.....
Игорь Шевченко (2005-09-14 10:03:00) [16]
> с графической (т.е. ownerdraw) полосой прокрутки
Не парься. Искреннее пожелание, без обид.
Fay (2005-09-14 08:22:00) [17]флаг в руки