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

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

Толщина СкролБар-ов


Страницы:   1 2

DevilDevil ©   (2006-09-15 15:58:00) 

Для реализации скроллинга в собственном компоненте использую:

procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL
procedure WMHScroll(var Message: TWMVScroll); message WM_VSCROLL
GetScrollInfo
SetScrollInfo


Каким образом задать произвольную (не стандартную) толщину полос прокрутки?


DevilDevil   (2006-09-18 13:33:00) [21]

> Ketmar ©   (15.09.06 19:37) [7]

Перехватить Handle СкролБара на данный момент могу только  в "обработчике" WMVScroll ( TWMVScroll.ScrollBar :  HWND ).

Соответственно, зная его Handle, по идее, могу изменять его размеры... Не работает...


Ketmar   (2006-09-15 19:37:00) [22]

и какого ангела код изменения размеров делает в обработчике WM_VSCROLL? или опиши задачу нормально, или выключи бредогенератор.
я, кстати, ещё в [1] поинтересовался взаимосвязью. и до сих пор интересуюсь.


DevilDevil   (2006-09-15 19:33:00) [23]

void __fastcall TInfoTable::WMVScroll(TWMVScroll& Msg)
{
 SCROLLINFO Info;
 Info.cbSize=sizeof(Info);
 Info.fMask=SIF_ALL;
 GetScrollInfo(Handle,SB_VERT,&Info);

 int Pos=Info.nPos;

 Info.nMax  = FNeedRowsHeight;
 Info.nPage = ClHeight+1;

 TRect R;
 GetWindowRect(Msg.ScrollBar, &R);
 MoveWindow(Msg.ScrollBar, R.left, R.top, R.Width()+20, R.Height(), true);

 bool CanLookSelect = true;

 switch(Msg.ScrollCode)
 {
   case SB_TOP     : Pos = 0;                               SetFocus();
                     break;
   case SB_BOTTOM  : Pos = MaxPos;                          SetFocus();
                     break;
   case SB_LINEDOWN: Pos = Min(MaxPos, Pos+FDefRowHeight);  SetFocus();
                     break;
   case SB_LINEUP  : Pos = Max(0, Pos-FDefRowHeight);       SetFocus();
                     break;

   case SB_PAGEUP  : Pos = Max(0, Pos-Info.nPage);          SetFocus();
                     break;
   case SB_PAGEDOWN: Pos = Min(MaxPos, Pos+Info.nPage);     SetFocus();
                     break;

   case SB_WHEELPOS:
        if (Msg.Result


Ketmar   (2006-09-15 19:07:00) [24]

код давай.


DevilDevil   (2006-09-15 18:53:00) [25]

не очень


Ketmar   (2006-09-15 18:31:00) [26]

а что, изменить размеры окна ScrollBar'а -- не помогает?


DevilDevil   (2006-09-15 16:34:00) [27]

> Ketmar ©   (15.09.06 16:06) [1]
> для начала неплохо пояснить, что такое "толщина полосы прокрутки"


см. GetSystemMetrics с константой SM_CXVSCROLL

> как оно связано с вышеприведёнными сообщениями
Это способ реализации скроллинга и не более того


Ketmar   (2006-09-15 16:06:00) [28]

для начала неплохо пояснить, что такое "толщина полосы прокрутки", и как оно связано с вышеприведёнными сообщениями.


Страницы:   1 2

Наверх

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