![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Толщина СкролБар-ов
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]для начала неплохо пояснить, что такое "толщина полосы прокрутки", и как оно связано с вышеприведёнными сообщениями.