[Erledigt] AddDate mit Daten aus Spingadget füttern klappt

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Helmut
Beiträge: 162
Registriert: 20.09.2004 22:53

[Erledigt] AddDate mit Daten aus Spingadget füttern klappt

Beitrag von Helmut »

Ich möchte zu einem Datum eine Zeit addieren.
AddDate, dachte ich, wäre gut.
:o
Nur in meinem Program soll er sich die Zeit aus einem Spingadget holen, und das klappt nicht.
Der addiert immer noch einmal, nur nicht mit dem Inhalt des Spingadget.....

Was mache ich falsch?

Hier der Code:

Code: Alles auswählen

;- Global Variables and Constants
Global BubbleTipStyle.l:BubbleTipStyle=0

;- Window Constants
Enumeration 1
  #Window_Workform1
EndEnumeration
#WindowIndex=#PB_Compiler_EnumerationValue

;- Gadget Constants
Enumeration 1
  ;Window_Workform1
  #Gadget_Workform1_Ausschaltzeit
  #Gadget_Workform1_Einschaltzeit
  #Gadget_Workform1_Text1
  #Gadget_Workform1_Text2
  #Gadget_Workform1_Text3
  #Gadget_Workform1_Text4
  #Gadget_Workform1_Einschaltzeit_Stunde
  #Gadget_Workform1_Einschaltzeit_Minute
  #Gadget_Workform1_Einschaltzeit_Sekunde
  #Gadget_Workform1_Ausschaltzeit_Stunde
  #Gadget_Workform1_Ausschaltzeit_Minute
  #Gadget_Workform1_Ausschaltzeit_Sekunde
  #Gadget_Workform1_Text5
  #Gadget_Workform1_Text6

EndEnumeration
#GadgetIndex=#PB_Compiler_EnumerationValue


Procedure.l Window_Workform1()
  If OpenWindow(#Window_Workform1,80,80,808,762,"                 Helmut's         Schaltuhr",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible)
      CalendarGadget(#Gadget_Workform1_Ausschaltzeit,210,35,200,170,Date())
      CalendarGadget(#Gadget_Workform1_Einschaltzeit,5,35,200,170,Date())
      TextGadget(#Gadget_Workform1_Text1,5,20,200,15,"Einschaltdatum",#PB_Text_Center)
        SetGadgetColor(#Gadget_Workform1_Text1,#PB_Gadget_FrontColor,8421376)
        SetGadgetFont(#Gadget_Workform1_Text1,LoadFont(#Gadget_Workform1_Text1,"",10,0))
      TextGadget(#Gadget_Workform1_Text2,210,20,200,15,"Ausschaltdatum",#PB_Text_Center)
        SetGadgetColor(#Gadget_Workform1_Text2,#PB_Gadget_FrontColor,16711680)
        SetGadgetFont(#Gadget_Workform1_Text2,LoadFont(#Gadget_Workform1_Text2,"",10,0))
      TextGadget(#Gadget_Workform1_Text3,5,220,200,15,"Einschaltzeit",#PB_Text_Center)
        SetGadgetColor(#Gadget_Workform1_Text3,#PB_Gadget_FrontColor,8421376)
      TextGadget(#Gadget_Workform1_Text4,210,220,200,15,"Ausschaltzeit",#PB_Text_Center)
        SetGadgetColor(#Gadget_Workform1_Text4,#PB_Gadget_FrontColor,16711680)
      SpinGadget(#Gadget_Workform1_Einschaltzeit_Stunde,5,235,60,20,0,23,#PB_Spin_Numeric)
      SetGadgetText(#Gadget_Workform1_Einschaltzeit_Stunde, "0") 
      SpinGadget(#Gadget_Workform1_Einschaltzeit_Minute,75,235,60,20,0,59,#PB_Spin_Numeric)
        SetGadgetText(#Gadget_Workform1_Einschaltzeit_Minute, "0") 
      SpinGadget(#Gadget_Workform1_Einschaltzeit_Sekunde,145,235,60,20,0,59,#PB_Spin_Numeric)
        SetGadgetText(#Gadget_Workform1_Einschaltzeit_Sekunde, "0") 
      SpinGadget(#Gadget_Workform1_Ausschaltzeit_Stunde,210,235,60,20,0,23,#PB_Spin_Numeric)
        SetGadgetText(#Gadget_Workform1_Ausschaltzeit_Stunde, "0") 
      SpinGadget(#Gadget_Workform1_Ausschaltzeit_Minute,280,235,60,20,0,59,#PB_Spin_Numeric)
        SetGadgetText(#Gadget_Workform1_Ausschaltzeit_Minute, "0") 
      SpinGadget(#Gadget_Workform1_Ausschaltzeit_Sekunde,350,235,60,20,0,59,#PB_Spin_Numeric)
        SetGadgetText(#Gadget_Workform1_Ausschaltzeit_Sekunde, "0") 
      TextGadget(#Gadget_Workform1_Text5,145,5,60,15,"Zustand",#PB_Text_Center)
      TextGadget(#Gadget_Workform1_Text6,210,5,60,15,"Unbekannt",#PB_Text_Center)
      HideWindow(#Window_Workform1,0)
      ProcedureReturn WindowID(#Window_Workform1)
  EndIf
EndProcedure


Procedure WindowCallback(WindowID,Message,wParam,lParam)
  ReturnValue=#PB_ProcessPureBasicEvents
  If Message=#WM_CTLCOLORSTATIC Or Message=#WM_CTLCOLOREDIT Or Message=#WM_CTLCOLORLISTBOX

  EndIf

  ProcedureReturn ReturnValue
EndProcedure



;- Main Loop
If Window_Workform1()
  SetWindowCallback(@WindowCallback())

  quitWorkform1=0
  Repeat
    EventID  =WaitWindowEvent()
    MenuID   =EventMenu()
    GadgetID =EventGadget()
    WindowID =EventWindow()
    Select EventID
      Case #PB_Event_CloseWindow
        If WindowID=#Window_Workform1
          quitWorkform1=1
        EndIf


      Case #PB_Event_Gadget
        Select GadgetID
          Case #Gadget_Workform1_Ausschaltzeit
    Ausschaltdatum = GetGadgetState(#Gadget_Workform1_Ausschaltzeit)        
  
            Case #Gadget_Workform1_Einschaltzeit
    Einschaltdatum = GetGadgetState(#Gadget_Workform1_Einschaltzeit)
   
          Case #Gadget_Workform1_Einschaltzeit_Stunde
    Einschaltzeit_Stunde = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Stunde)
    Einschaltdatum=  AddDate(Einschaltdatum, #PB_Date_Hour, Einschaltzeit_Stunde) ;        
 
          Case #Gadget_Workform1_Einschaltzeit_Minute
    Einschaltzeit_Minute = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Minute)
    Einschaltdatum=   AddDate(Einschaltdatum, #PB_Date_Minute, Einschaltzeit_Minute) ;                         

          Case #Gadget_Workform1_Einschaltzeit_Sekunde
    Einschaltzeit_Sekunde = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Sekunde)
    Einschaltdatum=   AddDate(Einschaltdatum, #PB_Date_Second, Einschaltzeit_Sekunde) ;       

          Case #Gadget_Workform1_Ausschaltzeit_Stunde          
    Ausschaltzeit_Stunde = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Stunde)         
       
          Case #Gadget_Workform1_Ausschaltzeit_Minute
    Ausschaltzeit_Minute = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Minute)         
           
          Case #Gadget_Workform1_Ausschaltzeit_Sekunde
    Ausschaltzeit_Sekunde = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Sekunde)         
        
        EndSelect

    EndSelect
    
 
   
        
    
 Debug  FormatDate("T=%dd,M= %mm,J=%yyyy,Stunde= %hh:Minute= %ii:Sekunde= %ss", Einschaltdatum)      
        
 FormatDate("T=%dd,M= %mm,J=%yyyy,Stunde= %hh:Minute= %ii:Sekunde= %ss", Date())   
 
 Aday=Day(Ausschaltdatum)
 AMonth=Month(Ausschaltdatum)
 AYear=Year(Ausschaltdatum)
 EDay=Day(Einschaltdatum)
 EMonth=Month(Einschaltdatum)
 EYear=Year(Einschaltdatum)
 Aktuel_Day=Day(Date())
 Aktuel_Month=Month(Date())
 Aktuel_Year=Year(Date())
 Aktuel_Stunde=Hour(Date()) 
 Aktuel_Minute=Minute(Date())
 Aktuel_Sekunde=Second(Date())
 
 
 ;+++++++++++++++++++++++++ Zeiten dazu addieren   ++++++++++++++++++++++++++++++++++++++++++
 
 
 
 ;+++++++++++++++++++++++++++++++++++++++++++++++ Vergleich ++++++++++++++++++++++++++++++++++

   SetGadgetText(#Gadget_Workform1_Text6,Str(Schaltvergleich))
  Until quitWorkform1
  CloseWindow(#Window_Workform1)
EndIf
End



     
     
Zuletzt geändert von Helmut am 13.01.2010 16:49, insgesamt 1-mal geändert.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: AddDate mit Daten aus einem Spingadget füttern klappt nicht

Beitrag von Kaeru Gaman »

du scheinst da ne menge code mitten im Eventloop zu haben, dein Debug und deine Variablenzuweisungen zumindest...
wenn ich das starte, rauscht einfach das debug durch, bei jeder kleinen Mausbewegung.

daher gehe ich mal davon aus, dass das am falschen Platz ist,
pack das z.b. in eine Procedure, die du immer dort aufrufst, wo ein maßgebliches Event stattgefunden hat,
oder setze dann ein Flag, dass der Code nur dann bearbeitet wird.
so in etwa:

Code: Alles auswählen

  Repeat
    EventID  =WaitWindowEvent()
    MenuID   =EventMenu()
    GadgetID =EventGadget()
    WindowID =EventWindow()
    Select EventID
      Case #PB_Event_CloseWindow
        If WindowID=#Window_Workform1
          quitWorkform1=1
        EndIf


      Case #PB_Event_Gadget
        Select GadgetID
          Case #Gadget_Workform1_Ausschaltzeit
            Ausschaltdatum = GetGadgetState(#Gadget_Workform1_Ausschaltzeit) 
            ChangeWorkform1 = 1      
 
          Case #Gadget_Workform1_Einschaltzeit
            Einschaltdatum = GetGadgetState(#Gadget_Workform1_Einschaltzeit)
            ChangeWorkform1 = 1      
   
          Case #Gadget_Workform1_Einschaltzeit_Stunde
            Einschaltzeit_Stunde = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Stunde)
            Einschaltdatum=  AddDate(Einschaltdatum, #PB_Date_Hour, Einschaltzeit_Stunde) ;       
            ChangeWorkform1 = 1      

          Case #Gadget_Workform1_Einschaltzeit_Minute
            Einschaltzeit_Minute = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Minute)
            Einschaltdatum=   AddDate(Einschaltdatum, #PB_Date_Minute, Einschaltzeit_Minute) ;                         
            ChangeWorkform1 = 1      

          Case #Gadget_Workform1_Einschaltzeit_Sekunde
            Einschaltzeit_Sekunde = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Sekunde)
            Einschaltdatum=   AddDate(Einschaltdatum, #PB_Date_Second, Einschaltzeit_Sekunde) ;       
            ChangeWorkform1 = 1      

          Case #Gadget_Workform1_Ausschaltzeit_Stunde         
            Ausschaltzeit_Stunde = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Stunde)         
            ChangeWorkform1 = 1      
       
          Case #Gadget_Workform1_Ausschaltzeit_Minute
            Ausschaltzeit_Minute = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Minute)         
            ChangeWorkform1 = 1      
           
          Case #Gadget_Workform1_Ausschaltzeit_Sekunde
            Ausschaltzeit_Sekunde = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Sekunde)         
            ChangeWorkform1 = 1      
       
        EndSelect
    EndSelect
   

   
       
    If ChangeWorkform1 = 1      
      ChangeWorkform1 = 0      
      Debug  FormatDate("T=%dd,M= %mm,J=%yyyy,Stunde= %hh:Minute= %ii:Sekunde= %ss", Einschaltdatum)     
             
      FormatDate("T=%dd,M= %mm,J=%yyyy,Stunde= %hh:Minute= %ii:Sekunde= %ss", Date())   
      
      Aday=Day(Ausschaltdatum)
      AMonth=Month(Ausschaltdatum)
      AYear=Year(Ausschaltdatum)
      EDay=Day(Einschaltdatum)
      EMonth=Month(Einschaltdatum)
      EYear=Year(Einschaltdatum)
      Aktuel_Day=Day(Date())
      Aktuel_Month=Month(Date())
      Aktuel_Year=Year(Date())
      Aktuel_Stunde=Hour(Date())
      Aktuel_Minute=Minute(Date())
      Aktuel_Sekunde=Second(Date())


      ;+++++++++++++++++++++++++ Zeiten dazu addieren   ++++++++++++++++++++++++++++++++++++++++++



      ;+++++++++++++++++++++++++++++++++++++++++++++++ Vergleich ++++++++++++++++++++++++++++++++++

      SetGadgetText(#Gadget_Workform1_Text6,Str(Schaltvergleich))
    EndIf

  Until quitWorkform1
... ich hab in dem Zuge mal sinnvoll eingerückt, damit ich was sehen kann.

PS:
so und dann sieht man auch, dass beim click auf das Spingadget zwei Debuglines erscheinen,
wohl weil ZWEI Events gefeuert werden, vermutlich CLICK und CHANGE,
also musst du auch noch nach EventType eingrenzen, damit du nur eines davon beachtest.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
hörmi
Beiträge: 106
Registriert: 10.07.2007 15:20
Kontaktdaten:

Re: AddDate mit Daten aus einem Spingadget füttern klappt nicht

Beitrag von hörmi »

Ich hab mal den Code von Kaeru als ausgang hergenommen

kann es sein das du soetwas möchtest?

Code: Alles auswählen

;- Global Variables and Constants
Global BubbleTipStyle.l:BubbleTipStyle=0

;- Window Constants
Enumeration 1
  #Window_Workform1
EndEnumeration
#WindowIndex=#PB_Compiler_EnumerationValue

;- Gadget Constants
Enumeration 1
  ;Window_Workform1
  #Gadget_Workform1_Ausschaltzeit
  #Gadget_Workform1_Einschaltzeit
  #Gadget_Workform1_Text1
  #Gadget_Workform1_Text2
  #Gadget_Workform1_Text3
  #Gadget_Workform1_Text4
  #Gadget_Workform1_Einschaltzeit_Stunde
  #Gadget_Workform1_Einschaltzeit_Minute
  #Gadget_Workform1_Einschaltzeit_Sekunde
  #Gadget_Workform1_Ausschaltzeit_Stunde
  #Gadget_Workform1_Ausschaltzeit_Minute
  #Gadget_Workform1_Ausschaltzeit_Sekunde
  #Gadget_Workform1_Text5
  #Gadget_Workform1_Text6

EndEnumeration
#GadgetIndex=#PB_Compiler_EnumerationValue


Procedure.l Window_Workform1()
  If OpenWindow(#Window_Workform1,80,80,808,762,"                 Helmut's         Schaltuhr",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible)
      CalendarGadget(#Gadget_Workform1_Ausschaltzeit,210,35,200,170,Date())
      CalendarGadget(#Gadget_Workform1_Einschaltzeit,5,35,200,170,Date())
      TextGadget(#Gadget_Workform1_Text1,5,20,200,15,"Einschaltdatum",#PB_Text_Center)
        SetGadgetColor(#Gadget_Workform1_Text1,#PB_Gadget_FrontColor,8421376)
        SetGadgetFont(#Gadget_Workform1_Text1,LoadFont(#Gadget_Workform1_Text1,"",10,0))
      TextGadget(#Gadget_Workform1_Text2,210,20,200,15,"Ausschaltdatum",#PB_Text_Center)
        SetGadgetColor(#Gadget_Workform1_Text2,#PB_Gadget_FrontColor,16711680)
        SetGadgetFont(#Gadget_Workform1_Text2,LoadFont(#Gadget_Workform1_Text2,"",10,0))
      TextGadget(#Gadget_Workform1_Text3,5,220,200,15,"Einschaltzeit",#PB_Text_Center)
        SetGadgetColor(#Gadget_Workform1_Text3,#PB_Gadget_FrontColor,8421376)
      TextGadget(#Gadget_Workform1_Text4,210,220,200,15,"Ausschaltzeit",#PB_Text_Center)
        SetGadgetColor(#Gadget_Workform1_Text4,#PB_Gadget_FrontColor,16711680)
      SpinGadget(#Gadget_Workform1_Einschaltzeit_Stunde,5,235,60,20,0,23,#PB_Spin_Numeric)
      SetGadgetText(#Gadget_Workform1_Einschaltzeit_Stunde, "0") 
      SpinGadget(#Gadget_Workform1_Einschaltzeit_Minute,75,235,60,20,0,59,#PB_Spin_Numeric)
        SetGadgetText(#Gadget_Workform1_Einschaltzeit_Minute, "0") 
      SpinGadget(#Gadget_Workform1_Einschaltzeit_Sekunde,145,235,60,20,0,59,#PB_Spin_Numeric)
        SetGadgetText(#Gadget_Workform1_Einschaltzeit_Sekunde, "0") 
      SpinGadget(#Gadget_Workform1_Ausschaltzeit_Stunde,210,235,60,20,0,23,#PB_Spin_Numeric)
        SetGadgetText(#Gadget_Workform1_Ausschaltzeit_Stunde, "0") 
      SpinGadget(#Gadget_Workform1_Ausschaltzeit_Minute,280,235,60,20,0,59,#PB_Spin_Numeric)
        SetGadgetText(#Gadget_Workform1_Ausschaltzeit_Minute, "0") 
      SpinGadget(#Gadget_Workform1_Ausschaltzeit_Sekunde,350,235,60,20,0,59,#PB_Spin_Numeric)
        SetGadgetText(#Gadget_Workform1_Ausschaltzeit_Sekunde, "0") 
      TextGadget(#Gadget_Workform1_Text5,145,5,60,15,"Zustand",#PB_Text_Center)
      TextGadget(#Gadget_Workform1_Text6,210,5,60,15,"Unbekannt",#PB_Text_Center)
      HideWindow(#Window_Workform1,0)
      ProcedureReturn WindowID(#Window_Workform1)
  EndIf
EndProcedure


Procedure WindowCallback(WindowID,Message,wParam,lParam)
  ReturnValue=#PB_ProcessPureBasicEvents
  If Message=#WM_CTLCOLORSTATIC Or Message=#WM_CTLCOLOREDIT Or Message=#WM_CTLCOLORLISTBOX

  EndIf

  ProcedureReturn ReturnValue
EndProcedure

Procedure GetEinschaltdatum()

  Einschaltdatum = GetGadgetState(#Gadget_Workform1_Einschaltzeit)

  Einschaltzeit_Stunde = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Stunde)
  Einschaltdatum=  AddDate(Einschaltdatum, #PB_Date_Hour, Einschaltzeit_Stunde) ;       

            Einschaltzeit_Minute = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Minute)
  Einschaltdatum=   AddDate(Einschaltdatum, #PB_Date_Minute, Einschaltzeit_Minute) ;                         

  Einschaltzeit_Sekunde = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Sekunde)
  Einschaltdatum=   AddDate(Einschaltdatum, #PB_Date_Second, Einschaltzeit_Sekunde) ;       

  ProcedureReturn Einschaltdatum
EndProcedure



;- Main Loop
If Window_Workform1()
  SetWindowCallback(@WindowCallback())

  quitWorkform1=0
 Repeat
    EventID  =WaitWindowEvent()
    MenuID   =EventMenu()
    GadgetID =EventGadget()
    WindowID =EventWindow()
    Select EventID
      Case #PB_Event_CloseWindow
        If WindowID=#Window_Workform1
          quitWorkform1=1
        EndIf


      Case #PB_Event_Gadget
        Select GadgetID
          Case #Gadget_Workform1_Ausschaltzeit
            Ausschaltdatum = GetGadgetState(#Gadget_Workform1_Ausschaltzeit) 
            ChangeWorkform1 = 1      

          Case #Gadget_Workform1_Einschaltzeit
            Einschaltdatum = GetEinschaltdatum()
            ChangeWorkform1 = 1      
   
          Case #Gadget_Workform1_Einschaltzeit_Stunde
            Einschaltdatum = GetEinschaltdatum()
            ChangeWorkform1 = 1      

          Case #Gadget_Workform1_Einschaltzeit_Minute
            Einschaltdatum = GetEinschaltdatum()
            ChangeWorkform1 = 1      

          Case #Gadget_Workform1_Einschaltzeit_Sekunde
            Einschaltdatum = GetEinschaltdatum()
            ChangeWorkform1 = 1      

          Case #Gadget_Workform1_Ausschaltzeit_Stunde         
            Ausschaltzeit_Stunde = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Stunde)         
            ChangeWorkform1 = 1      
       
          Case #Gadget_Workform1_Ausschaltzeit_Minute
            Ausschaltzeit_Minute = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Minute)         
            ChangeWorkform1 = 1      
           
          Case #Gadget_Workform1_Ausschaltzeit_Sekunde
            Ausschaltzeit_Sekunde = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Sekunde)         
            ChangeWorkform1 = 1      
       
        EndSelect
    EndSelect
   

   
       
    If ChangeWorkform1 = 1      
      ChangeWorkform1 = 0      
      Debug  FormatDate("T=%dd,M= %mm,J=%yyyy,Stunde= %hh:Minute= %ii:Sekunde= %ss", Einschaltdatum)     
             
      FormatDate("T=%dd,M= %mm,J=%yyyy,Stunde= %hh:Minute= %ii:Sekunde= %ss", Date())   
      
      Aday=Day(Ausschaltdatum)
      AMonth=Month(Ausschaltdatum)
      AYear=Year(Ausschaltdatum)
      EDay=Day(Einschaltdatum)
      EMonth=Month(Einschaltdatum)
      EYear=Year(Einschaltdatum)
      Aktuel_Day=Day(Date())
      Aktuel_Month=Month(Date())
      Aktuel_Year=Year(Date())
      Aktuel_Stunde=Hour(Date())
      Aktuel_Minute=Minute(Date())
      Aktuel_Sekunde=Second(Date())


      ;+++++++++++++++++++++++++ Zeiten dazu addieren   ++++++++++++++++++++++++++++++++++++++++++



      ;+++++++++++++++++++++++++++++++++++++++++++++++ Vergleich ++++++++++++++++++++++++++++++++++

      SetGadgetText(#Gadget_Workform1_Text6,Str(Schaltvergleich))
    EndIf

  Until quitWorkform1  
  CloseWindow(#Window_Workform1)
EndIf
End
BildBild Bild
Benutzeravatar
Helmut
Beiträge: 162
Registriert: 20.09.2004 22:53

Re: AddDate mit Daten aus einem Spingadget füttern klappt nicht

Beitrag von Helmut »

:praise:
Bin wieder mal schwer begeistert über die schnelle Hilfe der Mitglieder dieses Forum.

Habe zwar nicht verstanden, warum die Variable hochgezählt wird, obwohl ich nicht am Spinrad gedreht habe.

Diese Eventgeschichte checke ich, nicht aber warum die Variable zählt.

Er soll ja den Wert des Inhaltes des Spingadget nehmen, so verstehe ich es, das tut er scheinbar nicht....

Habt vielen Dank, jetzt kann ich weiter basteln.

Gruß Helmut
Benutzeravatar
Helmut
Beiträge: 162
Registriert: 20.09.2004 22:53

Neues Problem: Jetzt geht der Kalender nicht mehr ?????

Beitrag von Helmut »

Jetzt geht mit einem Mal die Abfrage des Kalenders nicht mehr????
Ist eigendlich auch in der Eventschleife.....

Code: Alles auswählen

;- Global Variables and Constants
Global BubbleTipStyle.l:BubbleTipStyle=0

;- Window Constants
Enumeration 1
  #Window_Workform1
EndEnumeration
#WindowIndex=#PB_Compiler_EnumerationValue

;- Gadget Constants
Enumeration 1
  ;Window_Workform1
  #Gadget_Workform1_Ausschaltzeit
  #Gadget_Workform1_Einschaltzeit
  #Gadget_Workform1_Text1
  #Gadget_Workform1_Text2
  #Gadget_Workform1_Text3
  #Gadget_Workform1_Text4
  #Gadget_Workform1_Einschaltzeit_Stunde
  #Gadget_Workform1_Einschaltzeit_Minute
  #Gadget_Workform1_Einschaltzeit_Sekunde
  #Gadget_Workform1_Ausschaltzeit_Stunde
  #Gadget_Workform1_Ausschaltzeit_Minute
  #Gadget_Workform1_Ausschaltzeit_Sekunde
  #Gadget_Workform1_Text5
  #Gadget_Workform1_Text6
  #Gadget_Workform1_Text7
  #Gadget_Workform1_Frame3D17
  #Gadget_Workform1_Text8
  #Gadget_Workform1_Text9
  #Gadget_Workform1_Text10
  #Gadget_Workform1_Geraetecode
  #Gadget_Workform1_HausCode
  #Gadget_Workform1_Text11


EndEnumeration
#GadgetIndex=#PB_Compiler_EnumerationValue


Procedure.l Window_Workform1()
  If OpenWindow(#Window_Workform1,80,80,808,762,"                 Helmut's         Schaltuhr",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible)
      CalendarGadget(#Gadget_Workform1_Ausschaltzeit,210,35,200,170,Date())
      CalendarGadget(#Gadget_Workform1_Einschaltzeit,5,35,200,170,Date())
      TextGadget(#Gadget_Workform1_Text1,5,20,200,15,"Einschaltdatum",#PB_Text_Center)
      SetGadgetColor(#Gadget_Workform1_Text1,#PB_Gadget_FrontColor,8421376)
      SetGadgetFont(#Gadget_Workform1_Text1,LoadFont(#Gadget_Workform1_Text1,"",10,0))
      TextGadget(#Gadget_Workform1_Text2,210,20,200,15,"Ausschaltdatum",#PB_Text_Center)
      SetGadgetColor(#Gadget_Workform1_Text2,#PB_Gadget_FrontColor,16711680)
      SetGadgetFont(#Gadget_Workform1_Text2,LoadFont(#Gadget_Workform1_Text2,"",10,0))
      TextGadget(#Gadget_Workform1_Text3,5,220,200,15,"Einschaltzeit",#PB_Text_Center)
      SetGadgetColor(#Gadget_Workform1_Text3,#PB_Gadget_FrontColor,8421376)
      TextGadget(#Gadget_Workform1_Text4,210,220,200,15,"Ausschaltzeit",#PB_Text_Center)
      SetGadgetColor(#Gadget_Workform1_Text4,#PB_Gadget_FrontColor,16711680)
      SpinGadget(#Gadget_Workform1_Einschaltzeit_Stunde,5,235,60,20,0,23,#PB_Spin_Numeric)      
      SpinGadget(#Gadget_Workform1_Einschaltzeit_Minute,75,235,60,20,0,59,#PB_Spin_Numeric)      
      SpinGadget(#Gadget_Workform1_Einschaltzeit_Sekunde,145,235,60,20,0,59,#PB_Spin_Numeric)      
      SpinGadget(#Gadget_Workform1_Ausschaltzeit_Stunde,210,235,60,20,0,23,#PB_Spin_Numeric)      
      SpinGadget(#Gadget_Workform1_Ausschaltzeit_Minute,280,235,60,20,0,59,#PB_Spin_Numeric)      
      SpinGadget(#Gadget_Workform1_Ausschaltzeit_Sekunde,350,235,60,20,0,59,#PB_Spin_Numeric)      
      TextGadget(#Gadget_Workform1_Text5,210,5,60,15,"Zustand",#PB_Text_Center)
      TextGadget(#Gadget_Workform1_Text6,350,5,60,15,"Unbekannt",#PB_Text_Center)
      TextGadget(#Gadget_Workform1_Text7,5,295,400,15,"noch Unbekannt")
      SetGadgetColor(#Gadget_Workform1_Text7,#PB_Gadget_FrontColor,8421376)
      Frame3DGadget(#Gadget_Workform1_Frame3D17,0,260,410,100,"eingestellte Daten")
      TextGadget(#Gadget_Workform1_Text8,5,275,205,15,"Einschaltdaten: ")
      SetGadgetColor(#Gadget_Workform1_Text8,#PB_Gadget_FrontColor,8421376)
      TextGadget(#Gadget_Workform1_Text9,5,315,205,15,"Ausschaltdaten:")
      SetGadgetColor(#Gadget_Workform1_Text9,#PB_Gadget_FrontColor,16711680)
      TextGadget(#Gadget_Workform1_Text10,5,335,400,15,"noch Unbekannt")
      SetGadgetColor(#Gadget_Workform1_Text10,#PB_Gadget_FrontColor,16711680)
      SpinGadget(#Gadget_Workform1_Geraetecode,145,0,60,20,1,100,#PB_Spin_Numeric)      
      SpinGadget(#Gadget_Workform1_HausCode,80,0,60,20,1,100,#PB_Spin_Numeric)      
      TextGadget(#Gadget_Workform1_Text11,5,5,60,15,"Steckdose:")
      HideWindow(#Window_Workform1,0)
      ProcedureReturn WindowID(#Window_Workform1)
  EndIf
EndProcedure


Procedure WindowCallback(WindowID,Message,wParam,lParam)
  ReturnValue=#PB_ProcessPureBasicEvents
  ProcedureReturn ReturnValue
EndProcedure

Procedure GetEinschaltdatum()
  Einschaltdatum = GetGadgetState(#Gadget_Workform1_Einschaltzeit)
  Einschaltzeit_Stunde = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Stunde)
  Einschaltdatum=  AddDate(Einschaltdatum, #PB_Date_Hour, Einschaltzeit_Stunde) ;     
  Einschaltzeit_Minute = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Minute)
  Einschaltdatum=   AddDate(Einschaltdatum, #PB_Date_Minute, Einschaltzeit_Minute) ;                         
  Einschaltzeit_Sekunde = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Sekunde)
  Einschaltdatum=   AddDate(Einschaltdatum, #PB_Date_Second, Einschaltzeit_Sekunde) ;       
  ProcedureReturn Einschaltdatum
EndProcedure

Procedure GetAusschaltdatum()
  Ausschaltdatum = GetGadgetState(#Gadget_Workform1_Ausschaltzeit)
  Ausschaltzeit_Stunde = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Stunde)
  Ausschaltdatum=  AddDate(Ausschaltdatum, #PB_Date_Hour, Ausschaltzeit_Stunde) ;       
  Ausschaltzeit_Minute = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Minute)
  Ausschaltdatum=   AddDate(Ausschaltdatum, #PB_Date_Minute, Ausschaltzeit_Minute) ;                         
  Ausschaltzeit_Sekunde = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Sekunde)
  Ausschaltdatum=   AddDate(Ausschaltdatum, #PB_Date_Second, Ausschaltzeit_Sekunde) ;       
  ProcedureReturn Ausschaltdatum
EndProcedure

Procedure GetGeraetecode()
  Geraetecode = GetGadgetState(#Gadget_Workform1_Geraetecode)
  ProcedureReturn Geraetecode
EndProcedure

Procedure GetHauscode()
  Hauscode = GetGadgetState(#Gadget_Workform1_Hauscode)
  ProcedureReturn Hauscode
EndProcedure


Procedure Zuweisen()
      Was = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Stunde)   
      SetGadgetText(#Gadget_Workform1_Einschaltzeit_Stunde,Str(Was))     
      Was = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Minute)   
      SetGadgetText(#Gadget_Workform1_Einschaltzeit_Minute,Str(Was))      
      Was = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Sekunde)   
      SetGadgetText(#Gadget_Workform1_Einschaltzeit_Sekunde,Str(Was))      
      Was = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Stunde)   
      SetGadgetText(#Gadget_Workform1_Ausschaltzeit_Stunde,Str(Was))      
      Was = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Minute)   
      SetGadgetText(#Gadget_Workform1_Ausschaltzeit_Minute,Str(Was))      
      Was = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Sekunde)   
      SetGadgetText(#Gadget_Workform1_Ausschaltzeit_Sekunde,Str(Was))      
      Was = GetGadgetState(#Gadget_Workform1_Geraetecode)   
      SetGadgetText(#Gadget_Workform1_Geraetecode,Str(Was))      
      Was = GetGadgetState(#Gadget_Workform1_Hauscode)   
      SetGadgetText(#Gadget_Workform1_Hauscode,Str(Was))     

           
EndProcedure 

;- Main Loop
If Window_Workform1()
  SetWindowCallback(@WindowCallback())

  quitWorkform1=0
Repeat
    EventID  =WaitWindowEvent()
    MenuID   =EventMenu()
    GadgetID =EventGadget()
    WindowID =EventWindow()
    Select EventID
      Case #PB_Event_CloseWindow
        If WindowID=#Window_Workform1
          quitWorkform1 = 1
        EndIf

      Case #PB_Event_Gadget
        Select GadgetID
        
          Case #Gadget_Workform1_Ausschaltzeit
            Ausschaltdatum = GetGadgetState(#Gadget_Workform1_Ausschaltzeit) 
            ChangeWorkform1 = 1   
            
          Case #Gadget_Workform1_Einschaltzeit
            Einschaltdatum = GetGadgetState(#Gadget_Workform1_Einschaltzeit) 
            ChangeWorkform1 = 1                        

          Case #Gadget_Workform1_Einschaltzeit;            Einschaltdaten
            Einschaltdatum = GetEinschaltdatum()
            ChangeWorkform1 = 1      
            
          Case #Gadget_Workform1_Ausschaltzeit;            Ausschaltdaten
            Ausschaltdatum = GetAusschaltdatum()         
            ChangeWorkform1 = 1  
               
          Case #Gadget_Workform1_Einschaltzeit_Stunde
            Einschaltdatum = GetEinschaltdatum()
            ChangeWorkform1 = 1      

          Case #Gadget_Workform1_Einschaltzeit_Minute
            Einschaltdatum = GetEinschaltdatum()
            ChangeWorkform1 = 1      

          Case #Gadget_Workform1_Einschaltzeit_Sekunde
            Einschaltdatum = GetEinschaltdatum()
            ChangeWorkform1 = 1                   

          Case #Gadget_Workform1_Ausschaltzeit_Stunde
            Ausschaltdatum = GetAusschaltdatum()                     
            ChangeWorkform1 = 1      
       
          Case #Gadget_Workform1_Ausschaltzeit_Minute
            Ausschaltdatum = GetAusschaltdatum()                 
            ChangeWorkform1 = 1      
           
          Case #Gadget_Workform1_Ausschaltzeit_Sekunde
            Ausschaltdatum = GetAusschaltdatum()            
            ChangeWorkform1 = 1            
 
          Case #Gadget_Workform1_Ausschaltzeit_Stunde         
            Ausschaltzeit_Stunde = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Stunde)         
            ChangeWorkform1 = 1      
       
          Case #Gadget_Workform1_Ausschaltzeit_Minute
            Ausschaltzeit_Minute = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Minute)         
            ChangeWorkform1 = 1      
           
          Case #Gadget_Workform1_Ausschaltzeit_Sekunde
            Ausschaltzeit_Sekunde = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Sekunde)         
            ChangeWorkform1 = 1  
                                          
          Case #Gadget_Workform1_Geraetecode
            Geraetecode = GetGeraetecode()
            ChangeWorkform1 = 1
            
          Case #Gadget_Workform1_HausCode
            Hauscode =  GetHauscode()      
            ChangeWorkform1 = 1
        EndSelect
    EndSelect
   

   If ChangeWorkform1 = 1      
      ChangeWorkform1 = 0      
      Debug  FormatDate("T= %dd, M= %mm, J= %yyyy,      Stunde= %hh: Minute= %ii: Sekunde= %ss", Einschaltdatum)     

      Debug  FormatDate("T= %dd, M= %mm, J= %yyyy,       Stunde= %hh: Minute= %ii: Sekunde= %ss", Ausschaltdatum)
           
      Ein.s= FormatDate("T= %dd, M= %mm, J= %yyyy,   Stunde= %hh: Minute= %ii: Sekunde= %ss", Einschaltdatum)
      SetGadgetText(#Gadget_Workform1_Text7,Ein)
      
      Aus.s= FormatDate("T= %dd, M= %mm, J= %yyyy,   Stunde= %hh: Minute= %ii: Sekunde= %ss", Ausschaltdatum)
      SetGadgetText(#Gadget_Workform1_Text10,Aus)
    EndIf    
   
      
     If (Einschaltdatum < Date()) And (Ausschaltdatum > Date()) 
      SetGadgetText(#Gadget_Workform1_Text6,"1")
      Else
      SetGadgetText(#Gadget_Workform1_Text6,"0")
     EndIf 

      ;+++++++++++++++++++++++++++++++++++++++++++++++ Daten Lesen oder speichern ++++++++++++++++++++++++++++++++++
 Zuweisen()
  
  Until quitWorkform1  
  CloseWindow(#Window_Workform1)
EndIf
End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: AddDate mit Daten aus einem Spingadget füttern klappt nicht

Beitrag von Kaeru Gaman »

du hast schon wieder Code unbedingt in der Mitte der Schleife!

warum setzt du den Part

Code: Alles auswählen

     If (Einschaltdatum < Date()) And (Ausschaltdatum > Date())
      SetGadgetText(#Gadget_Workform1_Text6,"1")
      Else
      SetGadgetText(#Gadget_Workform1_Text6,"0")
     EndIf 
nicht mit in die Bedingung von ChangeWorkform1 ????

Du darfst keinen Code der mehrere Events erzeugt bei jedem Schleifendurchlauf ausführen, das killt deine Eventqueue !!!!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Helmut
Beiträge: 162
Registriert: 20.09.2004 22:53

Re: AddDate mit Daten aus einem Spingadget füttern klappt nicht

Beitrag von Helmut »

Kaeru Gaman hat geschrieben:du hast schon wieder Code unbedingt in der Mitte der Schleife!

warum setzt du den Part

Code: Alles auswählen

     If (Einschaltdatum < Date()) And (Ausschaltdatum > Date())
      SetGadgetText(#Gadget_Workform1_Text6,"1")
      Else
      SetGadgetText(#Gadget_Workform1_Text6,"0")
     EndIf 
nicht mit in die Bedingung von ChangeWorkform1 ????

Du darfst keinen Code der mehrere Events erzeugt bei jedem Schleifendurchlauf ausführen, das killt deine Eventqueue !!!!
Weil dann die Schalt-Frage nur bei dem Event erkannt wird.
Sorry, das hatte ich ja noch vergessen:
Wie bekomme ich diese Schaltfrage unabhängig ob nun eine Maus drüber fährt.

Ich habe schon den EventCode aus dem Forum-Beispiel eingebaut, in dem Beispiel geht's, in meinem Programm reinkopiert geht der Kalender nicht.
Die Eventqueue war damit doch auch klein...
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Hintergrundinformation

Beitrag von Kaeru Gaman »

Deine Hauptschleife läuft jedes Mal durch, wenn irgendein Event auftritt, das ist auch dann der Fall, wenn der Mauszeiger über das Fenster hinweg bewegt wird.

Sachen, die Passieren sollen, wenn etwas verändert wurde, haben also keinen Platz mitten in der Hauptschleife,
sondern sie dürfen nur dann ausgeführt werden, wenn sich wirklich was verändert hat, nicht wenn die Maus drüberläuft.

Andersherum betrachtet, läuft die Hauptschleife nur dann durch, wenn ein Event auftritt.
Also Sachen, die regelmäßig passieren sollen, müssen durch ein Timer-Event gesteuert werden.
auch solcher Code darf nicht mitten in der Hauptschleife stehen,
sonst wird er nur dann ausgeführt, wenn die Maus über das Fenster wandert.

Das zweite nur der Vollständigkeit halber.

Du siehst also:
Es gibt keinen Code, der ohne irgendwelche Bedingungen mitten in der Eventschleife stehen sollte!


PS:
Was meinst du mit Schalt-Frage?

PPS
Achso, ob deine Anfangs- oder End-Bedingung zutrifft.
Das hilft ja auch nichts, das nur zu testen wenn sich die Maus bewegt, das ist der zweite Absatz, die Timer-Geschichte.

für sowas brauchst du ein Timer Event.
Schau dir mal AddWindowTimer() an.
Einmal pro Minute zu testen sollte reichen.
Weil dann die Schalt-Frage nur bei dem Event erkannt wird.
die wird immer nur bei einem Event erkannt, und wenn es eine Mausbewegung ist, außer du läßt das Wait beim WindowEvent weg, und das brät deine CPU, das sollte man lassen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Helmut
Beiträge: 162
Registriert: 20.09.2004 22:53

Re: AddDate mit Daten aus einem Spingadget füttern klappt nicht

Beitrag von Helmut »

Gute Erklärung für die Fensterevents (Mausgeschichte), habe den Vergleich jetzt mit einem Timer gemacht, funktioniert.

Der Kalenderevent geht noch nicht. Habe auch den kleineren Code wieder Probiert... geht nicht.
Probiere nochwas....


Edit: Zuweisen() anders eingetragen, und ...... LÄUFT

Code: Alles auswählen

;- Global Variables and Constants
Global BubbleTipStyle.l:BubbleTipStyle=0

;- Window Constants
Enumeration 1
  #Window_Workform1
EndEnumeration
#WindowIndex=#PB_Compiler_EnumerationValue

;- Gadget Constants
Enumeration 1
  ;Window_Workform1
 #Gadget_Workform1_Ausschaltzeit
  #Gadget_Workform1_Einschaltzeit
  #Gadget_Workform1_Text1
  #Gadget_Workform1_Text2
  #Gadget_Workform1_Text3
  #Gadget_Workform1_Text4
  #Gadget_Workform1_Einschaltzeit_Stunde
  #Gadget_Workform1_Einschaltzeit_Minute
  #Gadget_Workform1_Einschaltzeit_Sekunde
  #Gadget_Workform1_Ausschaltzeit_Stunde
  #Gadget_Workform1_Ausschaltzeit_Minute
  #Gadget_Workform1_Ausschaltzeit_Sekunde
  #Gadget_Workform1_Text5
  #Gadget_Workform1_Text6
  #Gadget_Workform1_Text7
  #Gadget_Workform1_Frame3D17
  #Gadget_Workform1_Text8
  #Gadget_Workform1_Text9
  #Gadget_Workform1_Text10
  #Gadget_Workform1_Geraetecode
  #Gadget_Workform1_HausCode
  #Gadget_Workform1_Text7_7
  #Gadget_Workform1_Frame3D17_17
  #Gadget_Workform1_Text8_8
  #Gadget_Workform1_Text9_9
  #Gadget_Workform1_Text10_10
  #Gadget_Workform1_Uebernehmen2
  #Gadget_Workform1_Uebernehmen1
  #Gadget_Workform1_Text6_6
  #Gadget_Workform1_Text5_5
  #Gadget_Workform1_Text12
  #Gadget_Workform1_Text11

EndEnumeration
#GadgetIndex=#PB_Compiler_EnumerationValue


Procedure.l Window_Workform1()
  If OpenWindow(#Window_Workform1,80,86,428,514,"                 Helmut's         Schaltuhr",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_Invisible)
      CalendarGadget(#Gadget_Workform1_Ausschaltzeit,210,35,200,170,(Date()-3600)); -3600, weil wenn der Fokus auf das heutige Datum drauf ist: Fehler!!
      CalendarGadget(#Gadget_Workform1_Einschaltzeit,5,35,200,170,Date()-3600)
      TextGadget(#Gadget_Workform1_Text1,5,20,200,15,"Einschaltdatum",#PB_Text_Center)
      SetGadgetColor(#Gadget_Workform1_Text1,#PB_Gadget_FrontColor,8421376)
      SetGadgetFont(#Gadget_Workform1_Text1,LoadFont(#Gadget_Workform1_Text1,"",10,0))
      TextGadget(#Gadget_Workform1_Text2,210,20,200,15,"Ausschaltdatum",#PB_Text_Center)
      SetGadgetColor(#Gadget_Workform1_Text2,#PB_Gadget_FrontColor,16711680)
      SetGadgetFont(#Gadget_Workform1_Text2,LoadFont(#Gadget_Workform1_Text2,"",10,0))
      TextGadget(#Gadget_Workform1_Text3,5,220,200,15,"Einschaltzeit",#PB_Text_Center)
      SetGadgetColor(#Gadget_Workform1_Text3,#PB_Gadget_FrontColor,8421376)
      TextGadget(#Gadget_Workform1_Text4,210,220,200,15,"Ausschaltzeit",#PB_Text_Center)
      SetGadgetColor(#Gadget_Workform1_Text4,#PB_Gadget_FrontColor,16711680)
      SpinGadget(#Gadget_Workform1_Einschaltzeit_Stunde,5,235,60,20,0,23,#PB_Spin_Numeric)      
      SpinGadget(#Gadget_Workform1_Einschaltzeit_Minute,75,235,60,20,0,59,#PB_Spin_Numeric)      
      SpinGadget(#Gadget_Workform1_Einschaltzeit_Sekunde,145,235,60,20,0,59,#PB_Spin_Numeric)      
      SpinGadget(#Gadget_Workform1_Ausschaltzeit_Stunde,210,235,60,20,0,23,#PB_Spin_Numeric)      
      SpinGadget(#Gadget_Workform1_Ausschaltzeit_Minute,280,235,60,20,0,59,#PB_Spin_Numeric)      
      SpinGadget(#Gadget_Workform1_Ausschaltzeit_Sekunde,350,235,60,20,0,59,#PB_Spin_Numeric)    
      TextGadget(#Gadget_Workform1_Text5,225,320,60,15,"Zustand",#PB_Text_Center)
      TextGadget(#Gadget_Workform1_Text6,345,320,60,15,"Unbekannt",#PB_Text_Center)
      TextGadget(#Gadget_Workform1_Text7,5,295,400,15,"noch Unbekannt")
      SetGadgetColor(#Gadget_Workform1_Text7,#PB_Gadget_FrontColor,8421376)
      Frame3DGadget(#Gadget_Workform1_Frame3D17,0,260,410,100,"eingestellte Daten Dose 1")
      TextGadget(#Gadget_Workform1_Text8,5,275,205,15,"Einschaltdaten: ")
      SetGadgetColor(#Gadget_Workform1_Text8,#PB_Gadget_FrontColor,8421376)
      TextGadget(#Gadget_Workform1_Text9,5,315,205,15,"Ausschaltdaten:")
      SetGadgetColor(#Gadget_Workform1_Text9,#PB_Gadget_FrontColor,16711680)
      TextGadget(#Gadget_Workform1_Text10,5,335,400,15,"noch Unbekannt")
      SetGadgetColor(#Gadget_Workform1_Text10,#PB_Gadget_FrontColor,16711680)
      SpinGadget(#Gadget_Workform1_Geraetecode,315,0,60,20,0,100,#PB_Spin_Numeric)
      SpinGadget(#Gadget_Workform1_HausCode,120,0,60,20,0,100,#PB_Spin_Numeric)        
      TextGadget(#Gadget_Workform1_Text11,5,5,60,15,"Steckdose:")
      TextGadget(#Gadget_Workform1_Text7_7,7,430,400,15,"noch Unbekannt")
      SetGadgetColor(#Gadget_Workform1_Text7_7,#PB_Gadget_FrontColor,8421376)      
      Frame3DGadget(#Gadget_Workform1_Frame3D17_17,2,395,410,100,"eingestellte Daten Dose 2")
      TextGadget(#Gadget_Workform1_Text8_8,7,410,205,15,"Einschaltdaten: ")
      SetGadgetColor(#Gadget_Workform1_Text8_8,#PB_Gadget_FrontColor,8421376)      
      TextGadget(#Gadget_Workform1_Text9_9,7,455,205,15,"Ausschaltdaten:")
      SetGadgetColor(#Gadget_Workform1_Text9_9,#PB_Gadget_FrontColor,16711680)      
      TextGadget(#Gadget_Workform1_Text10_10,7,475,400,15,"noch Unbekannt")
      SetGadgetColor(#Gadget_Workform1_Text10_10,#PB_Gadget_FrontColor,16711680)      
      ButtonGadget(#Gadget_Workform1_Uebernehmen2,320,410,85,20,"Übernehmen")
      ButtonGadget(#Gadget_Workform1_Uebernehmen1,320,276,85,20,"Übernehmen")
      TextGadget(#Gadget_Workform1_Text6_6,345,455,60,15,"Unbekannt",#PB_Text_Center)
      TextGadget(#Gadget_Workform1_Text5_5,220,455,60,15,"Zustand",#PB_Text_Center)     
      TextGadget(#Gadget_Workform1_Text12,210,0,60,15,"GeräteCode:")
      TextGadget(#Gadget_Workform1_Text11,0,0,60,15,"HausCode:")
      HideWindow(#Window_Workform1,0)    
      AddWindowTimer(#Window_Workform1, 100, 500)                                                                      
      ProcedureReturn WindowID(#Window_Workform1)
  EndIf
EndProcedure


Procedure WindowCallback(WindowID,Message,wParam,lParam)
  ReturnValue=#PB_ProcessPureBasicEvents
  ProcedureReturn ReturnValue
EndProcedure

Procedure GetEinschaltdatum()
  Einschaltdatum = GetGadgetState(#Gadget_Workform1_Einschaltzeit)
  Einschaltzeit_Stunde = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Stunde)
  Einschaltdatum=  AddDate(Einschaltdatum, #PB_Date_Hour, Einschaltzeit_Stunde) ;     
  Einschaltzeit_Minute = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Minute)
  Einschaltdatum=   AddDate(Einschaltdatum, #PB_Date_Minute, Einschaltzeit_Minute) ;                         
  Einschaltzeit_Sekunde = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Sekunde)
  Einschaltdatum=   AddDate(Einschaltdatum, #PB_Date_Second, Einschaltzeit_Sekunde) ;       
  ProcedureReturn Einschaltdatum
EndProcedure

Procedure GetAusschaltdatum()
  Ausschaltdatum = GetGadgetState(#Gadget_Workform1_Ausschaltzeit)
  Ausschaltzeit_Stunde = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Stunde)
  Ausschaltdatum=  AddDate(Ausschaltdatum, #PB_Date_Hour, Ausschaltzeit_Stunde) ;       
  Ausschaltzeit_Minute = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Minute)
  Ausschaltdatum=   AddDate(Ausschaltdatum, #PB_Date_Minute, Ausschaltzeit_Minute) ;                         
  Ausschaltzeit_Sekunde = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Sekunde)
  Ausschaltdatum=   AddDate(Ausschaltdatum, #PB_Date_Second, Ausschaltzeit_Sekunde) ;       
  ProcedureReturn Ausschaltdatum
EndProcedure

Procedure GetGeraetecode()
  Geraetecode = GetGadgetState(#Gadget_Workform1_Geraetecode)
  ProcedureReturn Geraetecode
EndProcedure

Procedure GetHauscode()
  Hauscode = GetGadgetState(#Gadget_Workform1_Hauscode)
  ProcedureReturn Hauscode
EndProcedure


Procedure Zuweisen()                                               ; nur was reinschreiben
      Was = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Stunde)   
      SetGadgetText(#Gadget_Workform1_Einschaltzeit_Stunde,Str(Was))     
      Was = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Minute)   
      SetGadgetText(#Gadget_Workform1_Einschaltzeit_Minute,Str(Was))      
      Was = GetGadgetState(#Gadget_Workform1_Einschaltzeit_Sekunde)   
      SetGadgetText(#Gadget_Workform1_Einschaltzeit_Sekunde,Str(Was))      
      Was = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Stunde)   
      SetGadgetText(#Gadget_Workform1_Ausschaltzeit_Stunde,Str(Was))      
      Was = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Minute)   
      SetGadgetText(#Gadget_Workform1_Ausschaltzeit_Minute,Str(Was))      
      Was = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Sekunde)   
      SetGadgetText(#Gadget_Workform1_Ausschaltzeit_Sekunde,Str(Was))      
      Was = GetGadgetState(#Gadget_Workform1_Geraetecode)   
      SetGadgetText(#Gadget_Workform1_Geraetecode,Str(Was))      
      Was = GetGadgetState(#Gadget_Workform1_Hauscode)   
      SetGadgetText(#Gadget_Workform1_Hauscode,Str(Was))     

EndProcedure 

;- Main Loop
If Window_Workform1()
  SetWindowCallback(@WindowCallback())
  quitWorkform1=0
 Zuweisen()
Repeat
    EventID  =WaitWindowEvent()
    MenuID   =EventMenu()
    GadgetID =EventGadget()
    WindowID =EventWindow()
    
  If EventID = #PB_Event_Timer And EventTimer() = 100
       If ( Einschaltdatum_Dose1 < Date()) And (Ausschaltdatum_Dose1 > Date()) 
           SetGadgetText(#Gadget_Workform1_Text6,"EIN")
           SetGadgetColor(#Gadget_Workform1_Text6,#PB_Gadget_FrontColor,$3446CB)
        Else
           SetGadgetText(#Gadget_Workform1_Text6,"AUS")
           SetGadgetColor(#Gadget_Workform1_Text6,#PB_Gadget_FrontColor,$FA0F05)
       EndIf 
       If ( Einschaltdatum_Dose2 < Date()) And (Ausschaltdatum_Dose2 > Date()) 
           SetGadgetText(#Gadget_Workform1_Text6_6,"EIN")
           SetGadgetColor(#Gadget_Workform1_Text6_6,#PB_Gadget_FrontColor,$3446CB)
        Else
           SetGadgetText(#Gadget_Workform1_Text6_6,"AUS")
           SetGadgetColor(#Gadget_Workform1_Text6_6,#PB_Gadget_FrontColor,$FA0F05)
       EndIf      
       
  EndIf  
   
  
    Select EventID   
        
      Case #PB_Event_CloseWindow
        If WindowID=#Window_Workform1
          quitWorkform1 = 1
        EndIf

      Case #PB_Event_Gadget
        Select GadgetID
        
          Case #Gadget_Workform1_Ausschaltzeit
            Ausschaltdatum = GetGadgetState(#Gadget_Workform1_Ausschaltzeit) 
            ChangeWorkform1 = 1   
            
          Case #Gadget_Workform1_Einschaltzeit
            Einschaltdatum = GetGadgetState(#Gadget_Workform1_Einschaltzeit) 
            ChangeWorkform1 = 1                        

          Case #Gadget_Workform1_Einschaltzeit
            Einschaltdatum = GetEinschaltdatum()
            ChangeWorkform1 = 1      
            
          Case #Gadget_Workform1_Ausschaltzeit
            Ausschaltdatum = GetAusschaltdatum()         
            ChangeWorkform1 = 1  
               
          Case #Gadget_Workform1_Einschaltzeit_Stunde
            Einschaltdatum = GetEinschaltdatum()
            ChangeWorkform1 = 1      

          Case #Gadget_Workform1_Einschaltzeit_Minute
            Einschaltdatum = GetEinschaltdatum()
            ChangeWorkform1 = 1      

          Case #Gadget_Workform1_Einschaltzeit_Sekunde
            Einschaltdatum = GetEinschaltdatum()
            ChangeWorkform1 = 1                   

          Case #Gadget_Workform1_Ausschaltzeit_Stunde
            Ausschaltdatum = GetAusschaltdatum()                     
            ChangeWorkform1 = 1      
       
          Case #Gadget_Workform1_Ausschaltzeit_Minute
            Ausschaltdatum = GetAusschaltdatum()                 
            ChangeWorkform1 = 1      
           
          Case #Gadget_Workform1_Ausschaltzeit_Sekunde
            Ausschaltdatum = GetAusschaltdatum()            
            ChangeWorkform1 = 1            
 
          Case #Gadget_Workform1_Ausschaltzeit_Stunde         
            Ausschaltzeit_Stunde = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Stunde)         
            ChangeWorkform1 = 1      
       
          Case #Gadget_Workform1_Ausschaltzeit_Minute
            Ausschaltzeit_Minute = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Minute)         
            ChangeWorkform1 = 1      
           
          Case #Gadget_Workform1_Ausschaltzeit_Sekunde
            Ausschaltzeit_Sekunde = GetGadgetState(#Gadget_Workform1_Ausschaltzeit_Sekunde)         
            ChangeWorkform1 = 1  
                                          
          Case #Gadget_Workform1_Geraetecode
            Geraetecode = GetGeraetecode()
            ChangeWorkform1 = 1
            
          Case #Gadget_Workform1_HausCode
            Hauscode =  GetHauscode()      
            ChangeWorkform1 = 1
            
          Case #Gadget_Workform1_Uebernehmen1
            Einschaltdatum_Dose1= Einschaltdatum
            Ausschaltdatum_Dose1= Ausschaltdatum
            SetGadgetText(#Gadget_Workform1_Frame3D17,"eingestellte Daten:      "+"HausCode= "+Str(Hauscode)+"      GeräteCode= "+Str(Geraetecode))
            Ein.s= FormatDate("T= %dd, M= %mm, J= %yyyy,   Stunde= %hh: Minute= %ii: Sekunde= %ss", Einschaltdatum_Dose1)
            SetGadgetText(#Gadget_Workform1_Text7,Ein)      
            Aus.s= FormatDate("T= %dd, M= %mm, J= %yyyy,   Stunde= %hh: Minute= %ii: Sekunde= %ss", Ausschaltdatum_Dose1)
            SetGadgetText(#Gadget_Workform1_Text10,Aus)               
            ChangeWorkform1 = 1
            
          Case #Gadget_Workform1_Uebernehmen2
            Einschaltdatum_Dose2= Einschaltdatum
            Ausschaltdatum_Dose2= Ausschaltdatum
            SetGadgetText(#Gadget_Workform1_Frame3D17_17,"eingestellte Daten:      "+"HausCode= "+Str(Hauscode)+"      GeräteCode= "+Str(Geraetecode))             
            Ein.s= FormatDate("T= %dd, M= %mm, J= %yyyy,   Stunde= %hh: Minute= %ii: Sekunde= %ss", Einschaltdatum_Dose2)
            SetGadgetText(#Gadget_Workform1_Text7_7,Ein)      
            Aus.s= FormatDate("T= %dd, M= %mm, J= %yyyy,   Stunde= %hh: Minute= %ii: Sekunde= %ss", Ausschaltdatum_Dose2)
            SetGadgetText(#Gadget_Workform1_Text10_10,Aus)
            ChangeWorkform1 = 1 
             
        EndSelect
    EndSelect
   

   If ChangeWorkform1 = 1      
      ChangeWorkform1 = 0      
      GeraeteCode = GetGadgetState(#Gadget_Workform1_GeraeteCode)
      HausCode = GetGadgetState(#Gadget_Workform1_HausCode)  
      Debug  FormatDate("T= %dd, M= %mm, J= %yyyy,      Stunde= %hh: Minute= %ii: Sekunde= %ss",Einschaltdatum_Dose1)     
   EndIf    
  
   
      ;+++++++++++++++++++++++++++++++++++++++++++++++ Daten Lesen oder speichern ++++++++++++++++++++++++++++++++++

 
  Until quitWorkform1  
  CloseWindow(#Window_Workform1)
EndIf
End
Benutzeravatar
Helmut
Beiträge: 162
Registriert: 20.09.2004 22:53

Re: AddDate mit Daten aus einem Spingadget füttern klappt nicht

Beitrag von Helmut »

Habe den Code im Beitrag mal aktualisiert, weil sonst ist es doch viel Code.

Einen Effekt habe ich noch:

Im CalenderGadget ist der Fokus auf das heutige Datum.

Wenn ich diesen Parameter anklicke übernimmt er das Datum nicht.

Wenn ich einmal ein anderes Datum anklicke geht es.

Warum???
Gruß Helmut
Antworten