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
#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
#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
#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
#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