SetScrollGadgetPage

Gadget ›› ScrollBarGadget ››
Parent Previous Next

SetScrollGadgetPage

Синтаксис

Sub SetScrollGadgetPage OVERLOAD(ByVal gadget As Long, ByVal page As Integer)

Только для Windows: Sub SetScrollGadgetPage OVERLOAD(ByVal hWin As HWND, ByVal page As Integer,ByVal style As Integer)

Описание

Это перегруженная функция для установки размера страницы для пропорциональной прокрутки ScrollBar. Первая функция используется для своего созданного гаджета с помощью ScrollBarGadget. Вторая функция используется для стандартного ScrollBar, который указывается при создании окна с параметрами WS_HSCROLL и WS_VSCROLL.

Параметры

gadget - номер гаджета

hWin - окно , имеющее ScrollBar

page - новый размер страницы пропорциональной прокрутки

style - стиль , может быть:
    SBS_HORZ - горизонтальный ScrollBar
    SBS_VERT - вертикальный ScrollBar

Платформы

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

Результат

Пример2 (только для 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: Full featured Documentation generator