ScrollBarGadget

Gadget ››
Parent Previous Next

ScrollBarGadget

Синтаксис

Function ScrollBarGadget(ByVal gadget As Long,ByVal x As Long, ByVal y As Long, ByVal w As Long, ByVal h As Long, ByVal MINRange As Long, ByVal MAXRange As Long, ByVal Style As Long = SB_HORZ, ByVal PageLength As Long = 10) As HWND

Описание

Гаджет - скроллинг

Параметры

gadget - идентификатор\номер (любое натуральное число больше нуля, может быть 1,2,3,4 и др.)

x,y,w,h - расположение и размеры гаджета

MINRange , MAXRange - начальная и конечная точки диапазона скролинга

Style - стиль гаджета , может быть:

Для Windows и Linux:
SBS_HORZ - Обозначает горизонтальную линейку прокрутки. Если стили ни SBS_BOTTOMALIGN, ни SBS_TOPALIGN не определены, линейка прокрутки имеет высоту, ширину и позицию, определенные x, y, nWidth и nHeight.
SBS_VERT - Обозначает вертикальную линейку прокрутки. Если Вы не определяете ни SBS_RIGHTALIGN, ни SBS_LEFTALIGN стиль, линейка прокрутки имеет высоту, ширину и позицию, определенную параметрами x, y, nWidth и nHeight.

Только для Windows:
SBS_BOTTOMALIGN - Выравнивает нижнюю кромку линейки прокрутки с нижней кромкой прямоугольника, определенного параметрами x, y, nWidth, и nHeight. Линейка прокрутки имеет заданную по умолчанию высоту для системных линеек прокрутки. Используйте этот стиль со стилем SBS_HORZ.
SBS_LEFTALIGN - Выравнивает левый край линейки прокрутки с левым краем прямоугольника, определенного параметрами x, y, nWidth и nHeight. Линейка прокрутки имеет заданную по умолчанию ширину для системных линеек прокрутки. Используйте этот стиль с SBS_VERT стилем.
SBS_RIGHTALIGN - Выравнивает правый край линейки прокрутки с правым краем прямоугольника, определенного параметрами x, y, nWidth, и nHeight. Линейка прокрутки имеет заданную по умолчанию ширину для системных линеек прокрутки. Используйте этот стиль с SBS_VERT стилем.
SBS_SIZEBOX - Обозначает размер окна. Если Вы не определяете ни SBS_SIZEBOXBOTTOMRIGHTALIGN, ни SBS_SIZEBOXTOPLEFTALIGN стиль, размер окна имеет высоту, ширину и позицию, определенную параметрами x, y, nWidth и nHeight.
SBS_SIZEBOXBOTTOMRIGHTALIGN - Выравнивает размер нижнего правого угла окна с нижним правым углом прямоугольника, определенного параметрами x, y, nWidth, и nHeight. Размер окна имеет заданный по умолчанию размер для системы размера окон. Используйте этот стиль с SBS_SIZEBOX стилем.
SBS_SIZEBOXTOPLEFTALIGN - Выравнивает размер верхнего левого угла окна с левым верхним углом прямоугольника, определенного параметрами x, y, nWidth, и nHeight. Размер окна имеет заданный по умолчанию размер для системы размера окон. Используйте этот стиль с SBS_SIZEBOX стилем.
SBS_SIZEGRIP - Подобен стилю SBS_SIZEBOX, но с выпуклой рамкой.
SBS_TOPALIGN - Выравнивает верхний край линейки прокрутки с верхним краем прямоугольника, определенного параметрами x, y, nWidth, и nHeight. Линейка прокрутки имеет заданную по умолчанию высоту для системы линеек прокрутки. Используйте этот стиль с SBS_HORZ стилем.

PageLength - длина шага скролинга при листании постранично

Платформы

Windows , Linux

Пример1

#Include "window9.bi"
Dim Shared As HWND hw
Dim As Integer ev
hw=OpenWindow("",10,10,300,240): WindowColor(hw,&hff0000)
UpdateInfoXserver()
ScrollBarGadget(2,0,0,20,WindowClientHeight(hw),0,470,SBS_VERT)
SetGadgetColor(2,&hff,1,3)
Do
  ev=WaitEvent
Loop Until ev=EventClose

Результат

Пример2

#Include "window9.bi"
Dim Shared As HWND hw
Dim As Integer ev
hw=OpenWindow("TESTCOLOR",10,10,370,140): CenterWindow(hw)
ScrollBarGadget(1,10,10,200,20,0,255):SetGadgetColor(1,&hff,1,3) 'R
ScrollBarGadget(2,10,40,200,20,0,255):SetGadgetColor(2,&hff00,1,3) 'G
ScrollBarGadget(3,10,70,200,20,0,255):SetGadgetColor(3,&hff0000,1,3)'B
TextGadget(4,220,10,30,20,Str(GetScrollGadgetPos(1)),SS_CENTER):SetGadgetColor(4,0,&hff,2) 'R
TextGadget(5,220,40,30,20,Str(GetScrollGadgetPos(2)),SS_CENTER):SetGadgetColor(5,0,&hff00,2) 'G
TextGadget(6,220,70,30,20,Str(GetScrollGadgetPos(3)),SS_CENTER):SetGadgetColor(6,0,&hff0000,2) 'B
TextGadget(7,260,10,80,80):SetGadgetColor(7,0,0,1)
function size() As Integer
  Static As Integer r,g,b
  Dim As Integer selR=GetScrollGadgetPos(1),selG=GetScrollGadgetPos(2),selB=GetScrollGadgetPos(3)
  If r<>selR Or g<>selG Or b<>selB Then
     r=selR : g=selG : b=selB
     SetGadgetText(4,Str(r)):SetGadgetText(5,Str(g)):SetGadgetText(6,Str(b))
     SetGadgetColor(7,BGR(r,g,b),0,1)
  EndIf
  Return TRUE
End Function
SetTimer(hw,1,20,Cast(Any Ptr,@size))
Do
  ev=WaitEvent
Loop Until ev=EventClose

Результат

Пример3

#Include "window9.bi"
Dim Shared As HWND hw
Dim As Integer ev
hw=OpenWindow("",10,10,300,240): WindowColor(hw,&hff0000)
UpdateInfoXserver()
ScrollBarGadget(2,0,0,20,WindowClientHeight(hw),0,470,SBS_VERT,10)
SetGadgetColor(2,&hff0000,1,3)
Function size() As Integer
  Static As Integer width_scroll , height_scroll , sizewinX , sizewinY
  If WindowClientHeight(hw)<>sizewinY Then
     sizewinY=WindowClientHeight(hw)
     ResizeGadget(2,,,,sizewinY)
     If sizewinY<GetScrollGadgetRange(2,1) Then
        HideGadget(2,0)
        SetScrollGadgetPage(2,sizewinY)
     Else
        HideGadget(2,1)
     EndIf
  EndIf
  If   height_scroll<>GetScrollGadgetPos(2)  Then
     height_scroll=GetScrollGadgetPos(2)
  EndIf
  Return TRUE
End Function
Function draw_ () As Integer
  WindowStartDraw(hw,30,0,300,440)
  FillRectDraw(100,100,&HFF0000)
  CircleDraw(100,190-GetScrollGadgetPos(2),50,,255)
  BoxDraw(50,300-GetScrollGadgetPos(2),100,100,,&hff00)
  StopDraw
  Return TRUE
End Function
SetTimer(hw,2,20,Cast(any ptr,@DRAW_))
SetTimer(hw,1,20,Cast(any ptr,@size))
Do
  ev=WaitEvent
Loop Until ev=EventClose

Результат

Пример4 (только для windows)

#Include "window9.bi"
Dim Shared As HWND hw
Dim As Integer ev
Dim Shared As RECT rect
hw=OpenWindow("",10,10,300,240,WS_OVERLAPPEDWINDOW Or WS_VISIBLE Or WS_VSCROLL Or WS_HSCROLL): WindowColor(hw,&hff0000)
GetClientRect(hw,@rect)
ButtonGadget(3,100,100,200,200,"Hello")
SetScrollGadgetRange(hw,0,630,0):SetScrollGadgetRange(hw,0,470,1)
SetScrollGadgetPage(hw,rect.right-rect.left,0)
SetScrollGadgetPage(hw,rect.bottom-rect.top,1)
Sub size()
  Static As Integer width_scroll , height_scroll , sizewinX , sizewinY
  GetClientRect(hw,@rect)
  If rect.right-rect.left<>sizewinX Then
     sizewinX=rect.right-rect.left
     If sizewinX<=GetScrollGadgetRange(hw,1,0) Then
        ShowScrollBar(hw,0,1)
        SetScrollGadgetPage(hw,sizewinX,0)
     Else
        ShowScrollBar(hw,0,0)
     EndIf
  EndIf
  If rect.bottom-rect.top<>sizewinY Then
     sizewinY=rect.bottom-rect.top
     If sizewinY<GetScrollGadgetRange(hw,1,1) Then
        ShowScrollBar(hw,1,1)
        SetScrollGadgetPage(hw,sizewinY,1)
     Else
        ShowScrollBar(hw,1,0)
     EndIf
  EndIf
  If width_scroll<>GetScrollGadgetPos(hw,0) Or height_scroll<>GetScrollGadgetPos(hw,1)  Then
     width_scroll=GetScrollGadgetPos(hw,0):height_scroll=GetScrollGadgetPos(hw,1)
     ResizeGadget(3,100-width_scroll,100-height_scroll)
  EndIf
End Sub
SetTimer(hw,1,1,Cast(TIMERPROC,@size))
Do
  ev=WaitEvent
Loop Until ev=EventClose

Результат

Created with the Personal Edition of HelpNDoc: Easily create Help documents