Aktuelle Zeit: 20.10.2019 16:38

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: BlockUI
BeitragVerfasst: 18.10.2019 17:11 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
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:
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

_________________
"A user interface is like a joke. If you have to explain it, it’s not that good." (Martin Leblanc)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: BlockUI
BeitragVerfasst: 18.10.2019 20:16 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
Cool, danke fürs Teilen. :allright:

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye