Aktuelle Zeit: 14.12.2019 22:28

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: DoItLater - Delayed SetGadgetText, etc
BeitragVerfasst: 09.05.2019 19:33 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Bevor ich es wieder verbummle... :wink:
Code:
;-TOP
; Comment : DoItLater
; Author  : mk-soft
; Version : v0.02
; Create  : 27.03.2019
; OS      : All

Enumeration
  #SetGadgetText
  #SetGadgetState
  #SetGadgetColor
EndEnumeration

Structure udtDoItLater
  Command.i
  Gadget.i
  Text.s
  Param.i
  Param2.i
  Time.i
  Start.i
EndStructure

Global NewList DoItLater.udtDoItLater()
Global MutexDoItLater = CreateMutex()

Procedure SetGadgetTextDelay(Gadget, Text.s, Time)
  LockMutex(MutexDoItLater)
  LastElement(DoItLater())
  AddElement(DoItLater())
  With DoItLater()
    \Command = #SetGadgetText
    \Gadget = Gadget
    \Text = Text
    \Time = Time
    \Start = ElapsedMilliseconds()
  EndWith
  UnlockMutex(MutexDoItLater)
EndProcedure

Procedure SetGadgetStateDelay(Gadget, State, Time)
  LockMutex(MutexDoItLater)
  LastElement(DoItLater())
  AddElement(DoItLater())
  With DoItLater()
    \Command = #SetGadgetState
    \Gadget = Gadget
    \Param = State
    \Time = Time
    \Start = ElapsedMilliseconds()
  EndWith
  UnlockMutex(MutexDoItLater)
EndProcedure

Procedure SetGadgetColorDelay(Gadget, ColorType, Color, Time)
  LockMutex(MutexDoItLater)
  LastElement(DoItLater())
  AddElement(DoItLater())
  With DoItLater()
    \Command = #SetGadgetColor
    \Gadget = Gadget
    \Param = ColorType
    \Param2 = Color
    \Time = Time
    \Start = ElapsedMilliseconds()
  EndWith
  UnlockMutex(MutexDoItLater)
EndProcedure

Procedure DoEventDoItLater()
  Protected Time = ElapsedMilliseconds()
  With DoItLater()
    LockMutex(MutexDoItLater)
    ForEach DoItLater()
      If (Time - \Start) >= \Time
        If IsGadget(\Gadget)
          Select \Command
            Case #SetGadgetText
              SetGadgetText(\Gadget, \Text)
            Case #SetGadgetState
              SetGadgetState(\Gadget, \Param)
            Case #SetGadgetColor
              SetGadgetColor(\Gadget, \Param, \Param2)
          EndSelect
        EndIf
        DeleteElement(DoItLater())
      EndIf
    Next
    UnlockMutex(MutexDoItLater)
  EndWith
EndProcedure

;- Example

Procedure Main()
  Protected event, index, x, y
 
  If OpenWindow(0 , #PB_Ignore, #PB_Ignore, 620, 80, "Do It Later", #PB_Window_SystemMenu)
    x = 10
    y = 10
    For index = 0 To 9
      ButtonGadget(index, x, y, 55, 25, "---")
      x + 60
    Next
    StringGadget(10, 10, 45, 120, 25, "")
   
    BindEvent(#PB_Event_Timer, @DoEventDoItLater(), 0, 999)
    AddWindowTimer(0, 999, 50)
   
    Repeat
      event = WaitWindowEvent()
      Select event
        Case #PB_Event_CloseWindow
          Break
        Case #PB_Event_Gadget
          index = EventGadget()
          Select index
            Case 0 To 9
              SetGadgetText(index, "-" + index + "-")
              SetGadgetTextDelay(index, "---", 800)
            Case 10
              If EventType() = #PB_EventType_Focus
                SetGadgetColor(10, #PB_Gadget_BackColor, #Red)
                SetGadgetColorDelay(10, #PB_Gadget_BackColor, #PB_Default, 150)
              EndIf
          EndSelect
      EndSelect
    ForEver
  EndIf
EndProcedure : Main()

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


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

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


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