Gadget ›› ScrollBarGadget

プログラム言語 FreeBasic


ScrollBarGadget

構文

ScrollBarGadget(gadget,x,y,width,height,min,max,[style=sbs_horz],[lenstep=10])

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,width,height - ガジェットの位置とサイズ

min,max - スクロール範囲の始点と終点

style - ガジェットが使えるスタイル (既定値 SBS_HORZ ) :

Windows と Linux:

Windows のみ:

lenstep - ページ換えで、ページ・スクロールするステップ幅 (既定値 10)

ガジェットの背景色は、SetGadgetColor 関数で設定できます。
さらに、3番目のパラメータが1で、4番目が3の場合は、教える関数は、2番目のパラメータで指定した色を変えます。
三番目のパラメータがゼロの場合、色は、デフォルトに戻ります。

プラットホーム

Windows , Linux


例1:

#Include "window9.bi"
Dim Shared As HWND hw
Dim As Integer ev
Dim Shared As RECT rect
hw=OpenWindow("",10,10,300,240): WindowColor(hw,&hff0000)
GetClientRect(hw,@rect)
ScrollBarGadget(2,rect.left,rect.top,20,rect.bottom,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)

Sub size
  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
End Sub

SetTimer(hw,1,1,Cast(TIMERPROC,@size))
Do
  ev=WaitEvent
Loop Until ev=EventClose


例3:

#Include "window9.bi"
Dim Shared As HWND hw
Dim As Integer ev
Dim Shared As RECT rect
hw=OpenWindow("",10,10,300,240): WindowColor(hw,&hff0000)
GetClientRect(hw,@rect)
ScrollBarGadget(2,rect.left,rect.top,20,rect.bottom,0,470,SBS_VERT,10)
SetGadgetColor(2,&hff0000,1,3)
Sub size()
  Static As Integer width_scroll , height_scroll , sizewinX , sizewinY
  GetClientRect(hw,@rect)
  If rect.bottom-rect.top<>sizewinY Then
    sizewinY=rect.bottom-rect.top
    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
End Sub
Sub draw_
  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
End Sub
SetTimer(hw,2,1,Cast(timerproc,@DRAW_))
SetTimer(hw,1,1,Cast(timerproc,@size))
Do
  ev=WaitEvent
Loop Until ev=EventClose


例4(ScrollbarGadget を使わない):

#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



http://mneniya.ucoz.ru/

←リンク元に戻る Window9 トップに戻る FreeBASIC マニュアル トップに戻る
ロシア語オリジナル:https://users.freebasic-portal.de/freebasicru/window9lib/window9.html