'Compileroption -s console
#include "sGUI\sGUI.bas"
#include once "sGUI\ScrollBar.bas"

screen 19,32,,&H04

InitGFX

dim as EventHandle ptr event
event=CreateEventHandle


'Hilfsvariablen zum Veraendern der ScrollBarLimits
dim as integer minimum,maximum,pagesize
minimum=1
maximum=23
pagesize=50
dim as Gadget ptr Scroll
Scroll= AddScrollBar(event,30,30,600,minimum,maximum,1,pagesize,0)
GadgetOn(Scroll)


dim as integer ff=freefile
open cons for output as ff
print #ff,"momentaner Bereich:" & minimum & "-" & maximum & " bei PageGroesse " & pagesize & ": " & GetScrollBarVal(Scroll)
print #ff,
print #ff,"<1> setzt das Scrollbar auf den Wert 50"
print #ff,"<2> setzt den Scrollbereich zu 1 - 300"
print #ff,"<3> setzt den Scrollbereich zu 1 - 60"
do
  event->xSleep(1)
  if event->GADGETMESSAGE then
    select case event->GADGETMESSAGE
      case Scroll
        print #ff,"ScrollBar Bereich:" & minimum & "-" & maximum & " bei PageGroesse " & pagesize & ": " & GetScrollBarVal(Scroll)
    end select
  end if

  if event->KEY<>"" then
    select case event->KEY
      case "1"
        ModifyScrollBar(Scroll,50)
        print #ff,"ScrollBar ist auf 50 gesetzt"
        Print #ff,"wenn ausserhalb der Limits dann auf max/min Wert gesetzt: " & GetScrollBarVal(Scroll)
      case "2"
        minimum=1
        maximum=300
        ModifyScrollBar(Scroll,minimum,maximum)
        print #ff,"ScrollBereich 1 - 300"
      case "3"
        minimum=1
        maximum=60
        ModifyScrollBar(Scroll,minimum,maximum)
        print #ff,"ScrollBereich 1 - 60"
    end select
  end if
loop until event->EXITEVENT

close ff

DestroyEventHandle (event)
end



/'
function AddScrollBar(event as EventHandle ptr,x as integer,y as integer,l as integer,mi as integer,ma as integer,va as integer,p as integer,hv as integer) as Gadget ptr
event   ein Zeiger zu einem EventHandle
x       Position in px
y       Position in px
l       länge des ScrollBars in px
mi      Minimalwert den der Scrollwert annehmen kann
ma      Maximalwert den der Scrollwert annehmen kann
va      voreingestellter Scrollwert
p       Pagegröße, Anzahl der gleichzeitig zu sehenden Elemente, wenn >1 beeinflusst dies Größe des Scrollbereiches
        der Scrollwert wird dann nicht mehr den Maximalwert erreichen, sondern sich wie folgt errechnen:
        wenn p>1 dann erreichbarer Maximalwert von va=mi-p+1
hv      Schalter horizontal=0 vertikal=1


sub ModifyScrollBar overload(gad as Gadget ptr,va as integer)
sub ModifyScrollBar (gad as Gadget ptr,mi as integer,ma as integer)
sub ModifyScrollBar (gad as Gadget ptr,mi as integer,ma as integer,va as integer)
neuberechnen der internen Werte bei Veränderung von va,mi,ma
3 Varianten dieses Befehls
gad         Zeiger auf ein Control
va          neuer Scrollwert(Regelgröße)
mi          neuer Minimalwert den der Scrollwert annehmen kann
ma          neuer Maximalwert den der Scrollwert annehmen kann



sub SetScrollBarVal (gad as Gadget ptr,va as integer)
sub SetScrollBarLimits(gad as Gadget ptr,mi as integer,ma as integer)
beide Befehle funktionieren noch, sollten aber durch ModifyScrollbar ersetzt werden



function GetScrollBarVal (gad as Gadget ptr) as integer
liefert den Scrollwert, auf dem das Scrollbar steht
gad         Zeiger auf ein Control



'/


