Seite 2 von 3

Re: Dategadget Kalender gößer darstellen

Verfasst: 20.05.2017 18:39
von gnaps
Hi RsBasic,

Code eingebaut und die Procedure nach dem ersten DateGadget aufgerufen

und siehe da alle DateGadget habe den Großen Kalender.

Mannnnnnnnnnnn :bounce: du kannst Dir nicht vorstellen wie happy ich jetzt bin.

Wirklich von ganzem Herzen besten Dank.

Meine Frau und Ihre Mitarbeiter werden begeistert sein.

gruß
gnaps

Re: Dategadget Kalender gößer darstellen

Verfasst: 20.05.2017 18:41
von gnaps
Hi RSBasic,

was mache ich unter Linux :D :D :D :D

Gruß
gnaps

Re: Dategadget Kalender gößer darstellen

Verfasst: 20.05.2017 18:44
von RSBasic
gnaps hat geschrieben:ich weis ich nerve, aber ich brauche das unbedingt.
Nein, du nervst nicht. Das Forum ist leider eh viel zu still.

Freut mich, dass es bei dir funktioniert und dass ich dir helfen konnte.
gnaps hat geschrieben:was mache ich unter Linux :D :D :D :D
Dafür bin ich nicht zuständig und ich kenne mich mit Linux nicht aus. Da musst du auf andere User warten.

Re: Dategadget Kalender gößer darstellen

Verfasst: 20.05.2017 19:17
von gnaps
HI RsBasic,

muss nochmals durchkommen, habe mich zu früh gefreut,
das ausgewählte datum wird in das DateGdagte eingetragen, jedoch
kommt das Datum mit GetGadgetstate() nicht in meiner Variable an.

Lasse ich den Aufruf SetWindowCallback(@WindowCallback()) weg (kleiner Kalender)
kommt das Datum in meiner Variable an.

Was ist das nun ?

Ich Hoffe Du kannst mir nochmal helfen.

Gruß
gnaps

Re: Dategadget Kalender gößer darstellen

Verfasst: 20.05.2017 19:35
von RSBasic
Bist du dir sicher, dass du dein DateGadget in deiner Event-Schleife richtig abfragst?

Hier ein Beispielcode:

Code: Alles auswählen

EnableExplicit

Define YourDateVariable

LoadFont(1, "Segoe UI", 15)

Procedure WindowCallback(hWnd, uMsg, wParam, lParam)
  Protected *NMDATETIMECHANGE.NMDATETIMECHANGE
  Protected Handle_DropDown
  Protected Handle_SysMonthCal32
  Protected ClassName$ = Space(1024)
  
  Select uMsg
    Case #WM_NOTIFY
      *NMDATETIMECHANGE = lParam
      
      If *NMDATETIMECHANGE\nmhdr\hwndfrom
        GetClassName_(*NMDATETIMECHANGE\nmhdr\hwndfrom, @ClassName$, Len(ClassName$))
        If ClassName$ = "SysDateTimePick32"
          If *NMDATETIMECHANGE\nmhdr\code = #DTN_DROPDOWN
            Handle_DropDown = FindWindow_("DropDown", 0)
            Handle_SysMonthCal32 = FindWindowEx_(Handle_DropDown, #Null, "SysMonthCal32", #Null)
            If Handle_SysMonthCal32
              SetWindowTheme_(Handle_SysMonthCal32, @"", @"")
              SendMessage_(Handle_SysMonthCal32, #WM_SETFONT, FontID(1), 0)
              SetWindowPos_(Handle_DropDown, 0, 0, 0, 250, 300, #SWP_SHOWWINDOW | #SWP_NOZORDER | #SWP_NOMOVE | #SWP_FRAMECHANGED)
            EndIf
          EndIf
        EndIf
      EndIf
      
  EndSelect
  
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  DateGadget(0, 10, 10, 300, 20, "%dd.%mm.%yyyy", Date())
  
  SetWindowCallback(@WindowCallback())
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 0
            Select EventType()
              Case #PB_EventType_Change
                YourDateVariable = GetGadgetState(0)
                Debug YourDateVariable
                Debug FormatDate("%dd.%mm.%yyyy", YourDateVariable)
            EndSelect
        EndSelect
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

Re: Dategadget Kalender gößer darstellen

Verfasst: 20.05.2017 20:57
von gnaps
Hi RSBasic

hatte einen Fehler im Code, passt schon.

gruß
gnaps

Re: Dategadget Kalender gößer darstellen

Verfasst: 21.05.2017 09:52
von gnaps
Hi RSBasic,

kannst Du mir noch sagen wie ich den Datumswert im DateGadget zentriert darstellen kann.

#PB_Text_Center gibts beim DateGadget ja nicht.

Du hast sicherlich eine Lösung.

Danke schon mal.

gruß
gnaps

Re: Dategadget Kalender gößer darstellen

Verfasst: 21.05.2017 10:05
von RSBasic
Ich habe auf MSDN leider nichts gefunden. Aber vielleicht reicht dir ein Workaround aus?

Code: Alles auswählen

EnableExplicit

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  DateGadget(0, 10, 10, 300, 20, "                                     %dd.%mm.%yyyy", Date())
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Ansonsten ist mir keine andere Lösung bekannt.

Re: Dategadget Kalender gößer darstellen

Verfasst: 21.05.2017 10:21
von gnaps
Hi RSBasic,

diese Variante hatte ich auch schon, jedoch beim Parsen Probleme,
Nunja muss ich halt 176 "%dd.%mm.%yyyy" in " %dd.%mm.%yyyy" ändern.

Leider geht das mit suchen und ersetzen nicht so einfach da manche "%dd.%mm.%yyyy" auch so bleiben müssen.

Dennoch danke.

gruß
gnaps

Re: Dategadget Kalender gößer darstellen

Verfasst: 21.05.2017 10:38
von Bisonte
wenn das so weiter geht ... dann solltest du ein CanvasGadget dafür nehmen....
Dann kannst/musst du ALLES so zeichnen wie du es dir vorstellst. ;)