Dategadget Kalender gößer darstellen
Dategadget Kalender gößer darstellen
Hallo Forum,
gibt es eine Möglichkeit die Tage im Kalender größer anzeigen zu lassen.
Schreibe ein Programm für meine Frau die hat eine TouchDisplay und Sie trifft die Tage
nur schlecht. Desshalb größere Zahlen.
Gruß
gnaps
gibt es eine Möglichkeit die Tage im Kalender größer anzeigen zu lassen.
Schreibe ein Programm für meine Frau die hat eine TouchDisplay und Sie trifft die Tage
nur schlecht. Desshalb größere Zahlen.
Gruß
gnaps
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Re: Dategadget Kalender gößer darstellen
Am sinnvollsten ist es, wenn du die DPI-Einstellung deines Monitors unter Windows erhöhst, dann werden nicht nur die Tage vom DateGadget, sondern alle anderen Gadgets ebenfalls größer dargestellt.
Oder möchtest du wirklich nur die Tage größer darstellen?
Oder möchtest du wirklich nur die Tage größer darstellen?
Re: Dategadget Kalender gößer darstellen
HI RSBasic,
ja, nur die Tage größer,
meine Buttons haben schon 50x50Pixel und der rest ist auch schon größer,
nur die Tage sind zu klein.
gruß
gnaps
ja, nur die Tage größer,
meine Buttons haben schon 50x50Pixel und der rest ist auch schon größer,
nur die Tage sind zu klein.
gruß
gnaps
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Re: Dategadget Kalender gößer darstellen
Code: Alles auswählen
EnableExplicit
LoadFont(1, "Segoe UI", 15)
Procedure WindowCallback(hWnd, uMsg, wParam, lParam)
Protected *NMDATETIMECHANGE.NMDATETIMECHANGE
Protected Handle_DropDown
Protected Handle_SysMonthCal32
Select uMsg
Case #WM_NOTIFY
*NMDATETIMECHANGE = lParam
Select *NMDATETIMECHANGE\nmhdr\hwndfrom
Case GadgetID(0)
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
EndSelect
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_CloseWindow
End
EndSelect
ForEver
EndIf
Re: Dategadget Kalender gößer darstellen
Hi RSBasic,
das sieht ja gut aus.
Leider verstehe ich den Code nicht.
ich habe mindestens 10 verschieden Dategadgets für verschiedene Datumswerte, kann man den Code den du geschrieben hast global
für jedes Dategadget einsetzen.
gruß
gnaps
das sieht ja gut aus.
Leider verstehe ich den Code nicht.
ich habe mindestens 10 verschieden Dategadgets für verschiedene Datumswerte, kann man den Code den du geschrieben hast global
für jedes Dategadget einsetzen.
gruß
gnaps
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Re: Dategadget Kalender gößer darstellen
Hallo gnaps,
Mit WinAPI kannst du deutlich viel mehr machen, als mit PB.
In meinem Code erstelle ich eine Callback-Prozedur basierend auf das Nachrichtensystem von Windows. Zuerst ermittle ich, wann der Kalender ausgeklappt wurde. Anschließend ermittle ich die jeweilige Handle-Nummer. Handle-Nummer ist sowas wie die ID in PB, nur eine von Windows verwaltete ID.
Mit Hilfe der Handle-Nummer kann ich die Schriftart und -größe mit SendMessage_() und #WM_SETFONT verändern. Da die Tage nach der Änderung mehr Platz benötigen, muss ich das Kalenderfenster mit SetWindowPos_() nachträglich vergrößern.
Ich hoffe, das reicht als Erklärung.
Die von mir verwendeten Funktionen sind nicht von PB, sondern von Windows. Das nennt man auch WinAPIs. WinAPI-Funktionen sind von Windows bereitgestellten Funktionen, die jeder Programmierer benutzen kann.gnaps hat geschrieben:Leider verstehe ich den Code nicht.
Mit WinAPI kannst du deutlich viel mehr machen, als mit PB.
In meinem Code erstelle ich eine Callback-Prozedur basierend auf das Nachrichtensystem von Windows. Zuerst ermittle ich, wann der Kalender ausgeklappt wurde. Anschließend ermittle ich die jeweilige Handle-Nummer. Handle-Nummer ist sowas wie die ID in PB, nur eine von Windows verwaltete ID.
Mit Hilfe der Handle-Nummer kann ich die Schriftart und -größe mit SendMessage_() und #WM_SETFONT verändern. Da die Tage nach der Änderung mehr Platz benötigen, muss ich das Kalenderfenster mit SetWindowPos_() nachträglich vergrößern.
Ich hoffe, das reicht als Erklärung.
Ja, kann man. Hier für dich:gnaps hat geschrieben:ich habe mindestens 10 verschieden Dategadgets für verschiedene Datumswerte, kann man den Code den du geschrieben hast global für jedes Dategadget einsetzen.
Code: Alles auswählen
EnableExplicit
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())
DateGadget(1, 10, 40, 300, 20, "%dd/%mm/%yyyy", Date())
DateGadget(2, 10, 70, 300, 20, "%yyyy", Date())
SetWindowCallback(@WindowCallback())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Re: Dategadget Kalender gößer darstellen
Hi RSBasic,
APIs sind mir bekannt, jedoch eine fremde Ebene.
Ich werde mich mal einarbeiten.
jetzt noch eine dumme Frage, wie bekomme ich mein ausgewähltes datum in eine Variable.
gruß
gnaps
APIs sind mir bekannt, jedoch eine fremde Ebene.
Ich werde mich mal einarbeiten.
jetzt noch eine dumme Frage, wie bekomme ich mein ausgewähltes datum in eine Variable.
gruß
gnaps
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Re: Dategadget Kalender gößer darstellen
Mit GetGadgetState() und mit FormatDate() kannst du den Datumswert in ein Datumstext ausgeben.
Re: Dategadget Kalender gößer darstellen
Hi RsBasic,
danke bin gerade selber darauf gekommen, dennoch vielen dank dafür.
gruß
gnaps
danke bin gerade selber darauf gekommen, dennoch vielen dank dafür.
gruß
gnaps
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Re: Dategadget Kalender gößer darstellen
Hi RSBasic,
ich weis ich nerve, aber ich brauche das unbedingt.
Mein Code ist jetzt schon über 17000 Zeilen, und das mit dem Datum
will ich meiner Gattin doch nun wirklich bereitstellen.
ich habe verschiedene Fenster mit jeweils einer Liste diese Liste wird mit dem Datum von bis geladen.
Wie mache ich das jetzt mit dem DateGadget in verschiedenen Fenstern.
Gruß
gnaps
ich weis ich nerve, aber ich brauche das unbedingt.
Mein Code ist jetzt schon über 17000 Zeilen, und das mit dem Datum
will ich meiner Gattin doch nun wirklich bereitstellen.
ich habe verschiedene Fenster mit jeweils einer Liste diese Liste wird mit dem Datum von bis geladen.
Wie mache ich das jetzt mit dem DateGadget in verschiedenen Fenstern.
Gruß
gnaps
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)