SpiderBasic Library - Liste neuer Funktionen

Hier könnt ihr alle Fragen zu SpiderBasic austauschen.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

Es gibt in SpiderBasic kein MessageRequester(). Jetzt aber schon.

Requester > Nachrichten-Dialog erstellen

Code: Alles auswählen

EnableExplicit

#SB_MessageRequester_Ok = 1
#SB_MessageRequester_Cancel = 2
#SB_MessageRequester_OkCancel = 3

Procedure MessageRequester(text.s, flags = #SB_MessageRequester_Ok)
  Protected sb_messagerequester_ok = #SB_MessageRequester_Ok
  Protected sb_messagerequester_cancel = #SB_MessageRequester_Cancel
  
  Select flags
    Case #SB_MessageRequester_Ok
      ! alert(v_text);
    Case #SB_MessageRequester_OkCancel
      ! var returnvalue = confirm(v_text);
      ! if (returnvalue == true) { 
      !   return v_sb_messagerequester_ok;
      ! } else {
      !   return v_sb_messagerequester_cancel;
      ! }
  EndSelect
  
EndProcedure

;================================================== Beispielcode ==================================================

Define Result

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  MessageRequester("Hallo Freunde")
  Result = MessageRequester("Hallo Freunde?", #SB_MessageRequester_OkCancel)
  If Result = #SB_MessageRequester_Ok
    Debug "Ok"
  ElseIf Result = #SB_MessageRequester_Cancel
    Debug "Cancel"
  EndIf
  
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

Es gibt in SpiderBasic kein InputRequester(). Jetzt aber schon.

Requester > Eingabe-Dialog erstellen

Code: Alles auswählen

EnableExplicit

Procedure.s InputRequester(message.s, standardtext.s)
  ! var returnvalue = prompt(v_message, v_standardtext);
  ! if (returnvalue) { 
  !   return returnvalue;
  ! } else {
  !   return "";
  ! }
  
EndProcedure

;================================================== Beispielcode ==================================================

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  Debug InputRequester("Hallo Freunde", "Standardtext")
  
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von Kiffi »

dige hat geschrieben:Edit: Hast du noch eine Idee, wie man den Text, der bspw. in einem TextGadget angezeigt wird, auswählbar machen kann (zum kopieren usw.)?

Code: Alles auswählen

! $(".spiderwindow").removeClass("sbNoSelect");
... gilt dann allerdings für alle Gadgets innerhalb aller Fenster.

Grüße ... Peter
Hygge
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

Kiffi war schneller. Ich kann ja gerne eine Funktion bauen, damit man es je Gadget einstellen kann.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

Gadget > TextGadget > Textmarkierung aktivieren oder deaktivieren
Gadget > ContainerGadget > Textmarkierung für alle Unter-Gadgets aktivieren oder deaktivieren
Gadget > FrameGadget > Textmarkierung aktivieren oder deaktivieren
Gadget > OptionGadget > Textmarkierung aktivieren oder deaktivieren
Gadget > CheckBoxGadget > Textmarkierung aktivieren oder deaktivieren
Gadget > HyperLinkGadget > Textmarkierung aktivieren oder deaktivieren
Gadget > ScrollAreaGadget > Textmarkierung für alle Unter-Gadgets aktivieren oder deaktivieren
Gadget > WebGadget > Textmarkierung aktivieren oder deaktivieren

Code: Alles auswählen

EnableExplicit

Procedure DisableGadgetTextSelection(gadget, state)
  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);
  ! }
 
  ;Falls nicht existiert, dann eine ID im Hauptelement erstellen, um später per CSS besser darauf zugreifen zu können
  ! var GadgetElement = $(spider_GadgetID(v_gadget).div);
  ! if (GadgetElement.attr("id")) {
  !   v_id = GadgetElement.attr("id");
  ! } else {
  !   GadgetElement.attr("id", "SB_Gadget_" + v_gadget);
  !   v_id = GadgetElement.attr("id");
  ! }
  
  If state
    styles = "#" + id + " { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }"
  Else
    styles = "#" + id + " { -webkit-touch-callout: text; -webkit-user-select: text; -khtml-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; }"
  EndIf
  
  ;Styles hinzufügen
  ! document.getElementById("SBCustomStyles").appendChild(document.createTextNode( v_styles ));
 
EndProcedure

;================================================== Beispielcode ==================================================

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_ScreenCentered)
  TextGadget(1, 10, 10, 100, 20, "Hello World", 0)
  
  DisableGadgetTextSelection(1, 0)
  
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

In SpiderBasic kann man keine StatusBar erstellen. Jetzt schon (CreateStatusBar(), AddStatusBarField(), StatusBarText(), FreeStatusBar(), IsStatusBar(), StatusBarHeight(), StatusBarID()):

StatusBar > StatusBar erstellen

Code: Alles auswählen

EnableExplicit

#SB_StatusBar_BorderLess = 1
#SB_StatusBar_Center = 2
#SB_StatusBar_Right = 4

Procedure CreateStatusBar(windowid)
  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);
  ! }
  
  ;Falls nicht existiert, dann CSS-Klassen mit den Styles erstellen
  ! if ($('#SBCustomStyles')[0].innerHTML.indexOf('.spiderwindow-statusbar') == -1) {
  !   document.getElementById("SBCustomStyles").appendChild(document.createTextNode( ".spiderwindow-statusbar { position: absolute; height: 22px; bottom: 0; width: 100%; border-top: 1px solid #D7D7D7; line-height: 22px; }" ));
  !   document.getElementById("SBCustomStyles").appendChild(document.createTextNode( ".spiderwindow-statusbar .StatusBarField { display: inline-block; padding: 0 5px; border-right: 1px solid #D7D7D7; }" ));
  !   document.getElementById("SBCustomStyles").appendChild(document.createTextNode( ".spiderwindow-statusbar .StatusBarField:last-child { border: none; }" ));
  ! }
  
  ! $(v_windowid.statusBar).addClass("spiderwindow-statusbar");
  ! return 1;
  
EndProcedure

Procedure AddStatusBarField(windowid, width)
  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 StatusBarField = document.createElement('div');
  ! StatusBarField.className = 'StatusBarField StatusBarField' + $(v_windowid.statusBar).children().length;
  ! StatusBarField.style.cssText = 'width: ' + v_width + 'px';
  
  ! $(v_windowid.statusBar).append(StatusBarField);
  ! return 1;
  
EndProcedure

Procedure StatusBarText(windowid, field, text.s, flags = 0)
  Protected styles.s
  Protected id.s
  Protected sb_statusbar_borderless = #SB_StatusBar_BorderLess
  Protected sb_statusbar_center = #SB_StatusBar_Center
  Protected sb_statusbar_right = #SB_StatusBar_Right

  ;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);
  ! }
  
  ! if ((v_flags & v_sb_statusbar_borderless) == v_sb_statusbar_borderless) {
  !   $($(v_windowid.statusBar).find(".StatusBarField" + v_field)[0]).css("border", "none");
  ! }
  ! if ((v_flags & v_sb_statusbar_center) == v_sb_statusbar_center) {
  !   $($(v_windowid.statusBar).find(".StatusBarField" + v_field)[0]).css("text-align", "center");
  ! }
  ! if ((v_flags & v_sb_statusbar_right) == v_sb_statusbar_right) {
  !   $($(v_windowid.statusBar).find(".StatusBarField" + v_field)[0]).css("text-align", "right");
  ! }
  
  ! $(v_windowid.statusBar).find(".StatusBarField" + v_field)[0].innerHTML = v_text;
  ! return 1;
  
EndProcedure

Procedure FreeStatusBar(windowid)
  ! $(v_windowid.statusBar).children().remove();
  ! $(v_windowid.statusBar).removeAttr("class");
  ! return 1;
  
EndProcedure

Procedure IsStatusBar(windowid)
  ! if ($(v_windowid.statusBar).hasClass("spiderwindow-statusbar")) {;
  !   return 1;
  ! } else {
  !   return 0;
  ! }
  
EndProcedure

Procedure StatusBarHeight(windowid)
  ! return $(v_windowid.statusBar).height();
  
EndProcedure

Procedure StatusBarID(windowid)
  ! if ($(v_windowid.statusBar).hasClass("spiderwindow-statusbar")) {;
  !   return v_windowid.statusBar;
  ! } else {
  !   return 0;
  ! }
  
EndProcedure

;================================================== Beispielcode ==================================================

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_SizeGadget)
  If CreateMenu(1, WindowID(0))
    MenuTitle("File")
    MenuItem(1, "Hello")
    MenuTitle("Edit")
    MenuItem(2, "Hello")
  EndIf
  
  TextGadget(1, 10, 10, 480, 20, "This window now has a status bar. See below :-)", 0)
  
  If CreateStatusBar(WindowID(0))
    AddStatusBarField(WindowID(0), 100)
    AddStatusBarField(WindowID(0), 100)
    AddStatusBarField(WindowID(0), 100)
    AddStatusBarField(WindowID(0), 100)
    
    StatusBarText(WindowID(0), 0, "Hello")
    StatusBarText(WindowID(0), 1, "PureBasic", #SB_StatusBar_Center)
    StatusBarText(WindowID(0), 2, "Friends", #SB_StatusBar_Right)
    StatusBarText(WindowID(0), 3, ":-)")
    
  EndIf
  
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
¯\_(ツ)_/¯
Beiträge: 141
Registriert: 18.08.2017 09:35

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von ¯\_(ツ)_/¯ »

1. TOP, danke!!!
2. Du hast wieder einen Lauf!
3. Warum arbeitest du nicht im SpiderBasic Team, dann würde die Entwicklung von SpiderBasic viiiiiiiiiel schneller gehen.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

In SpiderBasic gibt es kein ShortcutGadget. Jetzt schon:

ShortcutGadget > ShortcutGadget erstellen

Code: Alles auswählen

EnableExplicit

Procedure ShortcutGadget(gadget, x, y, width, height)
  Protected id.s
  
  StringGadget(gadget, x, y, width, height, "", #PB_String_ReadOnly)
  
  ;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);
  ! }
 
  ;Falls nicht existiert, dann eine ID im Hauptelement erstellen, um später per CSS besser darauf zugreifen zu können
  ! var GadgetElement = $(spider_GadgetID(v_gadget).div);
  ! if (GadgetElement.attr("id")) {
  !   v_id = GadgetElement.attr("id");
  ! } else {
  !   GadgetElement.attr("id", "SB_Gadget_" + v_gadget);
  !   v_id = GadgetElement.attr("id");
  ! }
  
  ! var dijitInputInner = GadgetElement.find(".dijitInputInner");
  ! var IsPressing_Control = false;
  ! var IsPressing_Shift = false;
  ! var IsPressing_Alt = false;
  ! var IsPressing_NormalKey = false;
  ! dijitInputInner.keydown(function(e) {
  !   var CurrentKey = e.key.toUpperCase();
  !   if (!IsPressing_Control && !IsPressing_Shift && !IsPressing_Alt && !IsPressing_NormalKey) {
  !     dijitInputInner.val("");
  !   }
  !   switch (CurrentKey) {
  !     case 'CONTROL':
  !       if (!IsPressing_Control) {
  !         dijitInputInner.val(dijitInputInner.val() + CurrentKey + " + ");
  !       }
  !       IsPressing_Control = true;
  !       break;
  !     case 'SHIFT':
  !       if (!IsPressing_Shift) {
  !         dijitInputInner.val(dijitInputInner.val() + CurrentKey + " + ");
  !       }
  !       IsPressing_Shift = true;
  !       break;
  !     case 'ALT':
  !       if (!IsPressing_Alt) {
  !         dijitInputInner.val(dijitInputInner.val() + CurrentKey + " + ");
  !       }
  !       IsPressing_Alt = true;
  !       break;
  !     default:
  !       IsPressing_NormalKey = true;
  !       if (!IsPressing_Control && !IsPressing_Shift && !IsPressing_Alt) {
  !         dijitInputInner.val(CurrentKey);
  !       } else {  
  !         dijitInputInner.val(dijitInputInner.val() + CurrentKey);
  !       }
  !   };
  ! });
  ! dijitInputInner.keyup(function(e) {
  !   var CurrentKey = e.key.toUpperCase();
  !   if (!IsPressing_NormalKey && (IsPressing_Control || IsPressing_Shift || IsPressing_Alt)) {
  !     dijitInputInner.val("");
  !   }
  !   IsPressing_Control = false;
  !   IsPressing_Shift = false;
  !   IsPressing_Alt = false;
  !   IsPressing_NormalKey = false;
  ! });
  
EndProcedure


;================================================== Beispielcode ==================================================

Procedure GadgetEvent()
  Select EventGadget()
    Case 2
      Debug GetGadgetText(1)
  EndSelect
 
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_ScreenCentered)
  ShortcutGadget(1, 10, 10, 200, 20)
  ButtonGadget(2, 220, 10, 100, 20, "Get pressed key", 0)
  
  BindEvent(#PB_Event_Gadget, @GadgetEvent())
  
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

Die Funktion Gadget in 3D drehen habe ich erweitert. Man kann nun auch optional ein Objekt perspektivisch drehen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

In SpiderBasic gibt es kein ScrollBarGadget. Jetzt schon:

ScrollBarGadget > ScrollBarGadget erstellen

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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten