In SpiderBasic gibt es kein ScrollBarGadget. Jetzt schon:
Code: Alles auswählen
EnableExplicit
Procedure ScrollBarGadgetEx(windowid, gadget, x, y, width, height, max, flags)
Protected styles.s
Protected id.s
;Falls nicht existiert, dann <style type="text/css" id="SBCustomStyles"></style> im Head erstellen, ohne Inline-Styles verwenden zu müssen
! if (!document.getElementById('SBCustomStyles')) {
! var StyleElement = document.createElement('style');
! StyleElement.type = 'text/css';
! StyleElement.id = 'SBCustomStyles';
! var HeadElement = document.getElementsByTagName('head')[0];
! HeadElement.appendChild(StyleElement);
! }
! var ScrollBarGadget = document.createElement('div');
! ScrollBarGadget.id = "SB_Gadget_" + v_gadget;
If flags = #PB_ScrollBar_Vertical
! ScrollBarGadget.className = "SB_ScrollBarGadget SB_ScrollBarGadget_Vertical";
! ScrollBarGadget.style.cssText = "left: " + v_x + "px; top: " + v_y + "px; width: auto; height: " + v_height + "px; overflow-y: scroll;";
Else
! ScrollBarGadget.className = "SB_ScrollBarGadget SB_ScrollBarGadget_Horizontal";
! ScrollBarGadget.style.cssText = "left: " + v_x + "px; top: " + v_y + "px; width: " + v_width + "px; height: auto; overflow-x: scroll;";
EndIf
! v_windowid.content.appendChild(ScrollBarGadget);
! var ScrollBarGadget_Inner = document.createElement('div');
! ScrollBarGadget_Inner.className = "SB_ScrollBarGadget_Inner";
If flags = #PB_ScrollBar_Vertical
! ScrollBarGadget_Inner.style.cssText = "width: 1px; height: " + v_max + "px;";
Else
! ScrollBarGadget_Inner.style.cssText = "width: " + v_max + "px; height: 1px;";
EndIf
! ScrollBarGadget.appendChild(ScrollBarGadget_Inner);
styles = ".SB_ScrollBarGadget { position: absolute; } .SB_ScrollBarGadget_Inner {} .SB_ScrollBarGadget_Vertical {} .SB_ScrollBarGadget_Horizontal {}"
;Styles hinzufügen
! document.getElementById("SBCustomStyles").appendChild(document.createTextNode( v_styles ));
EndProcedure
Macro ScrollBarGadget(windowid, gadget, x, y, width, height, max, flags = 0)
ScrollBarGadgetEx(windowid, gadget, x, y, width, height, max, flags)
EndMacro
Procedure GetGadgetStateEx(gadget)
Protected isownscrollbargadget.s
! var GadgetElement = $("#SB_Gadget_" + v_gadget);
! v_isownscrollbargadget = GadgetElement.hasClass("SB_ScrollBarGadget");
! var IsVertical = GadgetElement.hasClass("SB_ScrollBarGadget_Vertical");
If isownscrollbargadget <> ""
! if (IsVertical) {;
! return GadgetElement.scrollTop();
! } else {;
! return GadgetElement.scrollLeft();
! };
Else
ProcedureReturn GetGadgetState(gadget)
EndIf
EndProcedure
Macro GetGadgetState(gadget)
GetGadgetStateEx(gadget)
EndMacro
Procedure SetGadgetStateEx(gadget, state)
Protected isownscrollbargadget.s
! var GadgetElement = $("#SB_Gadget_" + v_gadget);
! v_isownscrollbargadget = GadgetElement.hasClass("SB_ScrollBarGadget");
! var IsVertical = GadgetElement.hasClass("SB_ScrollBarGadget_Vertical");
If isownscrollbargadget <> ""
! if (IsVertical) {;
! GadgetElement.scrollTop(v_state);
! } else {;
! GadgetElement.scrollLeft(v_state);
! };
Else
SetGadgetState(gadget, state)
EndIf
EndProcedure
Macro SetGadgetState(gadget, state)
SetGadgetStateEx(gadget, state)
EndMacro
Procedure GetGadgetAttributeEx(gadget, attribute)
Protected isownscrollbargadget.s
! var GadgetElement = $("#SB_Gadget_" + v_gadget);
! v_isownscrollbargadget = GadgetElement.hasClass("SB_ScrollBarGadget");
! var IsVertical = GadgetElement.hasClass("SB_ScrollBarGadget_Vertical");
If isownscrollbargadget <> ""
! if (IsVertical) {;
! return GadgetElement.find(".SB_ScrollBarGadget_Inner").height();
! } else {;
! return GadgetElement.find(".SB_ScrollBarGadget_Inner").width();
! };
Else
ProcedureReturn GetGadgetAttribute(gadget, attribute)
EndIf
EndProcedure
Macro GetGadgetAttribute(gadget, attribute)
GetGadgetAttributeEx(gadget, attribute)
EndMacro
Procedure SetGadgetAttributeEx(gadget, attribute, value)
Protected isownscrollbargadget.s
! var GadgetElement = $("#SB_Gadget_" + v_gadget);
! v_isownscrollbargadget = GadgetElement.hasClass("SB_ScrollBarGadget");
! var IsVertical = GadgetElement.hasClass("SB_ScrollBarGadget_Vertical");
If isownscrollbargadget <> ""
! if (IsVertical) {;
! GadgetElement.find(".SB_ScrollBarGadget_Inner").height(v_value);
! } else {;
! GadgetElement.find(".SB_ScrollBarGadget_Inner").width(v_value);
! };
Else
SetGadgetAttribute(gadget, attribute, value)
EndIf
EndProcedure
Macro SetGadgetAttribute(gadget, attribute, value)
SetGadgetAttributeEx(gadget, attribute, value)
EndMacro
;================================================== Beispielcode ==================================================
Procedure TimerEvents()
Select EventTimer()
Case 1
SetGadgetText(3, "ScrollBarGadget1-Scrollposition: " + Str(GetGadgetState(1)))
SetGadgetText(4, "ScrollBarGadget2-Scrollposition: " + Str(GetGadgetState(2)))
EndSelect
EndProcedure
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_ScreenCentered)
ScrollBarGadget(WindowID(0), 1, 10, 10, 480, 0, 500)
ScrollBarGadget(WindowID(0), 2, 10, 40, 0, 300, 2000, #PB_ScrollBar_Vertical)
TextGadget(3, 50, 50, 400, 20, "", 0)
TextGadget(4, 50, 80, 400, 20, "", 0)
SetGadgetAttribute(1, #PB_ScrollBar_Maximum, 1000)
Debug GetGadgetAttribute(1, #PB_ScrollBar_Maximum)
SetGadgetState(1, 100)
SetGadgetState(2, 500)
AddWindowTimer(0, 1, 100)
BindEvent(#PB_Event_Timer, @TimerEvents())
EndIf