CalendarGadget neues Datum nachträglich setzen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kiffi
Beiträge: 10534
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: CalendarGadget neues Datum nachträglich setzen

Beitrag von Kiffi »

mbergmann_sh hat geschrieben: 05.08.2022 11:52naja - zumindest im Beispiel muss ich diverse verwendete Variablen erstmal deklarieren, damit es mit EnableExplicit läuft.
Es gibt auch DisableExplicit, mit dem Du Teile Deines Codes zu Testzwecken von der Deklarationspflicht ausschließen kannst. Generell ist es allerdings immer von Vorteil EnableExplicit zu verwenden.
Hygge
Benutzeravatar
mk-soft
Beiträge: 3446
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: CalendarGadget neues Datum nachträglich setzen

Beitrag von mk-soft »

So geht es mit EnableExplizit

Code: Alles auswählen

;-TOP

EnableExplicit

XIncludeFile "Modul_DateTime.pb"

UseModule DateTime

Enumeration Windows
  #Main
EndEnumeration

Enumeration Gadgets
  #Calendar1
  #Calendar2
  #Calendar3
EndEnumeration

Enumeration Status
  #MainStatusBar
EndEnumeration

CompilerSelect #PB_Compiler_OS
    
  CompilerCase #PB_OS_Windows
  
    ; Create gadget eventtype change for CalendarGadget
    
    #MCN_SELECT = -746
    
    Procedure CalendarGadget_WindowCB(hWnd,uMsg,wParam,lParam)
      Protected *NMHDR.NMHDR
      Select uMsg
        Case #WM_NOTIFY
          *NMHDR = lParam
          If IsGadget(*NMHDR\idFrom) And GadgetType(*NMHDR\idFrom) = #PB_GadgetType_Calendar
            If *NMHDR\code = #MCN_SELECT
              PostEvent(#PB_Event_Gadget, 0, *NMHDR\idFrom, #PB_EventType_Change)
            EndIf
          EndIf
      EndSelect
      ProcedureReturn #PB_ProcessPureBasicEvents
    EndProcedure
    
    SetWindowCallback(@CalendarGadget_WindowCB())
    
  CompilerCase #PB_OS_MacOS
    
    
CompilerEndSelect


Procedure Main()
  Protected date1.d, date2.d, date3.d
  
  #MainStyle = #PB_Window_SystemMenu | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget
  
  
  If OpenWindow(#Main, #PB_Ignore, #PB_Ignore, 800, 600, "Window" , #MainStyle)
    
    CalendarGadget(#Calendar1, 10, 10, 180, 180)
    CalendarGadget(#Calendar2, 200, 10, 180, 180)
    CalendarGadget(#Calendar3, 390, 10, 180, 180)
    
    SetCalendarDate(#Calendar1, GetDateFromString("1965-08-20 00:00:00"))
    SetCalendarDate(#Calendar3, GetDateFromString("2065-08-20 00:00:00"))
    
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
          Break
        Case #PB_Event_Gadget
          Select EventGadget()
            Case #Calendar1
              date1 = GetCalendarDate(#Calendar1)
              Debug "Calendar 1: " + GetStringFromDate(date1)
              
            Case #Calendar2
              date2 = GetCalendarDate(#Calendar2)
              Debug "Calendar 2: " + GetStringFromDate(date2)
              
            Case #Calendar3
              date3 = GetCalendarDate(#Calendar3)
              Debug "Calendar 3: " + GetStringFromDate(date3)
            
          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.7x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace
Benutzeravatar
Pelagio
Beiträge: 420
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Re: CalendarGadget neues Datum nachträglich setzen

Beitrag von Pelagio »

Weiß jemand ob in nächster Zukunft geplant ist die 'Datum Gadgets' zu Modifizieren, so das sie <1970 und >2038 darstellen können.
Langsam wäre es an der Zeit dies anzugehen. Ich hatte ja stark gehofft das mit der Umstellung auf C-Backend, also Update auf PB 6, dies mit umgesetzt wurden wäre.
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.00 LTS].
Benutzeravatar
mk-soft
Beiträge: 3446
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: CalendarGadget neues Datum nachträglich setzen

Beitrag von mk-soft »

Wird wohl langsam zeit für PB intern auf time64 umzustellen. Werde es mal Fred melden ...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.7x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace
Antworten