BlockUI

Hier könnt ihr alle Fragen zu SpiderBasic austauschen.
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

BlockUI

Beitrag von Kiffi »

Salü,

wenn Ihr Eure Benutzeroberfläche (oder Teile davon) blockieren wollt (weil ein lang laufender Hintergrundprozess wie HttpRequest oder ähnliches ausgeführt werden soll), könnt Ihr den $.blockUI() - Befehl verwenden.

Hiermit kann entweder der gesamte Screen, ein Fenster oder ein Gadget gesperrt werden.

Hier ist ein Beispielcode, wie man ihn benutzt:

Code: Alles auswählen

Procedure BlockUI(Message.s)
  ! $.blockUI({ message: v_message });
EndProcedure

Procedure UnblockUI()
  ! $.unblockUI();
EndProcedure

Procedure BlockWindow(Window, Message.s)
  
  If IsWindow(Window)
    Protected WID = WindowID(Window)
    ! $(v_wid.content.parentElement.parentElement).block({ message: v_message });
  EndIf
  
EndProcedure

Procedure UnblockWindow(Window)
  
  If IsWindow(Window)
    Protected WID = WindowID(Window)
    ! $(v_wid.content.parentElement.parentElement).unblock();
  EndIf
  
EndProcedure

Procedure BlockGadget(Gadget, Message.s)
  
  If IsGadget(Gadget)
    Protected GID = GadgetID(Gadget)
    ! $(v_gid.div).block({ message: v_message });
  EndIf
  
EndProcedure

Procedure UnblockGadget(Gadget)
  
  If IsGadget(Gadget)
    Protected GID = GadgetID(Gadget)
    ! $(v_gid.div).unblock();
  EndIf
  
EndProcedure

; Demo

CompilerIf #PB_Compiler_IsMainFile
  
  Enumeration
    #Window
    #btnBlockScreen
    #btnBlockWindow
    #btnBlockGadget
    #Gadget
  EndEnumeration
  
  Enumeration 
    #timBlock
  EndEnumeration
  
  Global BlockType.s
  
  Procedure timBlockEvent()
    
    Select BlockType
        
      Case "Screen"
        UnblockUI()
        
      Case "Window"
        UnblockWindow(#Window)
        
      Case "Gadget"
        UnblockGadget(#Gadget)
        
    EndSelect
    
    RemoveWindowTimer(#Window, #timBlock)
    
    DisableGadget(#btnBlockScreen, #False)
    DisableGadget(#btnBlockWindow, #False)
    DisableGadget(#btnBlockGadget, #False)
    
  EndProcedure
  
  Procedure BlockIt()
    
    Select BlockType
        
      Case "Screen"
        BlockUI("<h1>Waiting 2 seconds....</h1>")
        
      Case "Window"
        BlockWindow(#Window, "<h2>Waiting 2 seconds....</h2>")
        
      Case "Gadget"
        BlockGadget(#Gadget, "<h3>Waiting 2 seconds....</h3>")
        
    EndSelect
    
    AddWindowTimer(#Window, #timBlock, 2000)
    BindEvent(#PB_Event_Timer, @timBlockEvent(), #Window, #timBlock)
    
    DisableGadget(#btnBlockScreen, #True)
    DisableGadget(#btnBlockWindow, #True)
    DisableGadget(#btnBlockGadget, #True)
    
  EndProcedure
  
  ; --
  
  Procedure btnBlockScreenEvent()
    BlockType = "Screen"
    BlockIt()
  EndProcedure
  
  Procedure btnBlockWindowEvent()
    BlockType = "Window"
    BlockIt()
  EndProcedure
  
  Procedure btnBlockGadgetEvent()
    BlockType = "Gadget"
    BlockIt()
  EndProcedure
  
  ; --
  
  OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 420, 400, "BlockUI-Demo", #PB_Window_ScreenCentered)
  
  ButtonGadget(#btnBlockScreen, 10,  10, 400, 50, "Block screen")
  ButtonGadget(#btnBlockWindow, 10,  70, 400, 50, "Block window")
  ButtonGadget(#btnBlockGadget, 10, 130, 400, 50, "Block gadget")
  
  ListIconGadget(#Gadget, 10, 190, 400, 200, "Col1", 100, #PB_ListIcon_GridLines)
  AddGadgetColumn(#Gadget, 1, "Col2", 100)
  
  AddGadgetItem(#Gadget, -1, "Foo" + #LF$ + "Bar")
  
  BindGadgetEvent(#btnBlockScreen, @btnBlockScreenEvent())
  BindGadgetEvent(#btnBlockWindow, @btnBlockWindowEvent())
  BindGadgetEvent(#btnBlockGadget, @btnBlockGadgetEvent())
  
CompilerEndIf
Weitere Informationen gibt es hier: http://malsup.com/jquery/block/

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

Re: BlockUI

Beitrag von RSBasic »

Cool, danke fürs Teilen. :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
dige
Beiträge: 1182
Registriert: 08.09.2004 08:53

Re: BlockUI

Beitrag von dige »

Danke, kann man gut gebrauchen :allright:
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Antworten