Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Требуется создать 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]

флаг в руки


Наверх

Титульная страница Поиск, карта сайта Написать письмо