Date64-Modul und das CalendarGadget

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Purethom
Beiträge: 50
Registriert: 21.09.2004 05:41
Wohnort: Berlin

Date64-Modul und das CalendarGadget

Beitrag von Purethom »

Hallo, ihr Lieben!

Es gibt doch in "Code, Tipps und Tricks" dieses wunderbare Date64-Modul. Vielen Dank an alle beteiligten Programmierer! Wie bekomme ich nun eine Zusammenarbeit mit dem Calendar- und DateGadget zustande? Diese unterstützen natürlich nicht den stark erweiterten Datumsbereich.
Kann jemand helfen?

Viele Grüße aus Berlin sendet

Thomas
Finde Gelassenheit bei Dingen, die du nicht ändern kannst!
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Date64-Modul und das CalendarGadget

Beitrag von RSBasic »

Purethom hat geschrieben:mit dem Calendar- und DateGadget zustande? Diese unterstützen natürlich nicht den stark erweiterten Datumsbereich.
Mit dem Date64-Modul kenne ich mich nicht aus, aber ich kann dir eine Lösung für das Datumsproblem beim CalendarGadget und DateGadget geben.

Für CalendarGadget:

Code: Alles auswählen

EnableExplicit

#MCN_SELCHANGE = #MCN_FIRST + 1
#MCN_SELECT = #MCN_FIRST + 4

Procedure WinCallback(hWnd, uMsg, wParam, lParam)
  Protected *NMHDR.NMHDR
  Protected SYSTEMTIME.SYSTEMTIME
 
  Select uMsg
    Case #WM_NOTIFY
      *NMHDR = lParam
      Select *NMHDR\hwndFrom
        Case GadgetID(1)
          Select *NMHDR\code
            Case #MCN_SELECT
              SendMessage_(GadgetID(1), #MCM_GETCURSEL, 0, SYSTEMTIME)
              Debug Str(SYSTEMTIME\wDay) + "." + Str(SYSTEMTIME\wMonth) + "." + Str(SYSTEMTIME\wYear)
          EndSelect
      EndSelect
  EndSelect
 
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CalendarGadget(1, 10, 10, 200, 200, Date())
 
  SetWindowCallback(@WinCallback())
 
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Für DateGadget:

Code: Alles auswählen

EnableExplicit

Procedure WinCallback(hWnd, uMsg, wParam, lParam) 
  Protected *NMHDR.NMHDR
  Protected SYSTEMTIME.SYSTEMTIME
  
  Select uMsg
    Case #WM_NOTIFY
      *NMHDR = lParam
      Select *NMHDR\hwndFrom
        Case GadgetID(1)
          Select *NMHDR\code
            Case #DTN_DATETIMECHANGE
              SendMessage_(GadgetID(1), #MCM_GETCURSEL, 0, SYSTEMTIME)
              Debug Str(SYSTEMTIME\wDay) + "." + Str(SYSTEMTIME\wMonth) + "." + Str(SYSTEMTIME\wYear)
          EndSelect
      EndSelect
  EndSelect
  
  ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure 

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  DateGadget(1, 10, 10, 100, 20)
  
  SetWindowCallback(@WinCallback())
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Purethom hat geschrieben:Viele Grüße aus Berlin sendet
Viele Grüße zurück aus Berlin an Berlin.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Purethom
Beiträge: 50
Registriert: 21.09.2004 05:41
Wohnort: Berlin

Re: Date64-Modul und das CalendarGadget

Beitrag von Purethom »

Hallo RSBasic,

das ist ja reine WinAPI-Magie! Aber es funktioniert. Obwohl ich zugeben muss, dass ich keine Ahnung habe, wie der Code arbeitet. Aber ich werde versuchen, mir das zu erarbeiten.
In diesem Zusammenhang, lieber Ray, deine Webside ist echt der Hammer. Total informativ, speziell der WinAPI-Teil.
In diesem Sinne, vielen Dank für deine schnelle Antwort und liebe Grüße aus Berlin nach Berlin sendet

Thomas
Finde Gelassenheit bei Dingen, die du nicht ändern kannst!
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Date64-Modul und das CalendarGadget

Beitrag von RSBasic »

Das freut mich zu hören und dass ich dir helfen konnte. :)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Kurzer
Beiträge: 1614
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Date64-Modul und das CalendarGadget

Beitrag von Kurzer »

Nur der Vollständigkeit halber:

Wilbert hat im englischen Forum mal eine Sammlung seiner "DateQ" Funktionen gepostet. Diese wurden von einem anderen User aufgegriffen und als Modul umgeschrieben. Ich hatte mir den Code dann auf meine Bedürfnisse angepasst und unter anderem eine Komplette Date64 Unterstützung für das Calendar-Gadget und das Date-Gadget.
Der Code enthält ein Beispiel, welches ausgeführt wird, wenn er als mainfile compiliert wird. also einfach in die IDE kopieren und kompilieren.

https://www.purebasic.fr/english/viewto ... 07#p478507
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2023: 56 Jahre.
Antworten