Seite 1 von 1

Datepicker mit größeren Buchstaben

Verfasst: 17.06.2019 21:37
von bin_neu_hier
Hallo Leute,

leider muss ich (nicht mehr der Allerjüngste) feststellen, dass mir die Schrift für einige Anzeigen zu mickrig ist und ich da schon mehr und mehr Schwierigkeiten bekomme. Beispielsweise bei den Mesagerequestern, Calender- und Dategadget.

In meinem kleinen Projekt (kleine Softwaretools) für einen Bekannten, der es noch schwerer mit den Augen hat, sind das noch viel schwerwiegendere Probleme. Ich habe hier so einen Datepicker zusammengenagelt, mehr oder weniger alles per Copy&Paste zusammengesetzt (nein, ich schäme mich nicht dafür), der zwar läuft, aber mit dem ich doch nicht so zufrieden bin.

Code: Alles auswählen


Enumeration
  #hauptfenster
  #zeichensatz
EndEnumeration



Procedure datepicker(pdatumgadget)
  tt = Val(StringField(GetGadgetText(pdatumgadget), 1, "."))
  mm = Val(StringField(GetGadgetText(pdatumgadget), 2, "."))
  yy = Val(StringField(GetGadgetText(pdatumgadget), 3, "."))
  pmainwindow = GetActiveWindow()
  DisableWindow(pmainwindow, #True)
  cw = OpenWindow(#PB_Any, 0, 0, 200, 240, "Datum auswählen", #PB_Window_WindowCentered, WindowID(pmainwindow))
  SetWindowColor(cw, RGB(255,255,255))
  fontnum = LoadFont(#PB_Any, "Arial", 12)
  SetGadgetFont(#PB_Default, FontID(fontnum))
  cg = CalendarGadget(#PB_Any, 0, 0, 200, 200)
  SetGadgetAttribute(cg, #PB_Calendar_Minimum, Date(1970,1,1,0,0,0))
  SetGadgetAttribute(cg, #PB_Calendar_Maximum, Date(2037,12,31,0,0,0))
  SetWindowTheme_(GadgetID(cg), @"", @"")
  SendMessage_(GadgetID(cg), #MCM_SETCOLOR, #MCSC_TITLEBK, RGB( 51, 170, 255))
  SetWindowLongPtr_(GadgetID(cg), #GWL_EXSTYLE, GetWindowLongPtr_(GadgetID(cg), #GWL_EXSTYLE) &(~#WS_EX_CLIENTEDGE))
  SetWindowPos_(GadgetID(cg), 0, 0, 0, 0, 0, #SWP_SHOWWINDOW | #SWP_NOZORDER | #SWP_NOSIZE | #SWP_NOMOVE | #SWP_FRAMECHANGED)
  SetGadgetState(cg, Date(yy,mm,tt,0,0,0))
  SetGadgetColor(cg, #PB_Gadget_BackColor, RGB(255,255,255)) ;Hintergrundfarbe
  SetGadgetColor(cg, #PB_Gadget_FrontColor, RGB(  0,  0,  0)) ;Textfarbe für angezeigte Tage
  SetGadgetColor(cg, #PB_Gadget_TitleBackColor, RGB( 51,204,102)) ;Hintergrundfarbe für den Monatstitel
  SetGadgetColor(cg, #PB_Gadget_TitleFrontColor, RGB(  0,  0,  0)) ;Textfarbe für den Monatstitel
  SetGadgetColor(cg, #PB_Gadget_GrayTextColor, RGB( 190, 190, 190))   ; Textfarbe für Tage, welche nicht im aktuellen Monat liegen
  
  bga = ButtonGadget(#PB_Any,0,215,100,25,"abbrechen")
  bgo = ButtonGadget(#PB_Any,100,215,100,25,"übernehmen")
  datum = 0
  Repeat
    Event = WaitWindowEvent()
    If EventWindow() = cw
      If Event = #PB_Event_Gadget
        If EventGadget() = bgo
          datum = GetGadgetState(cg)
          Break
        EndIf
        If EventGadget() = bga
          datum = 0
          Break
        EndIf
      EndIf
    EndIf
  ForEver
  CloseWindow(cw)
  DisableWindow(pmainwindow, #False)
  If datum <> 0
    SetGadgetText(pdatumgadget, FormatDate("%dd.%mm.%yyyy",datum))
  EndIf
  
EndProcedure



If OpenWindow(#hauptfenster, 0, 0, 300, 300, "", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered | #PB_Window_SizeGadget)
  If LoadFont(#zeichensatz, "Arial", 11) : SetGadgetFont(#PB_Default, FontID(#zeichensatz)) : EndIf
  
  tg = TextGadget(#PB_Any, 15, 15, 122, 24, "01.12.2000", #PB_Text_Center | #WS_BORDER  )
  SetGadgetColor(tg, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetColor(tg, #PB_Gadget_FrontColor, $000000)
  SetWindowLongPtr_(GadgetID(tg), #GWL_STYLE, GetWindowLongPtr_(GadgetID(tg), #GWL_STYLE) | #SS_NOTIFY)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case tg
            datepicker(tg)
            
        EndSelect
        
      Case #PB_Event_CloseWindow
        End
        
    EndSelect
  ForEver
EndIf
End
Das mit den Farben ist suboptimal, vor allem, dass man die Wochentage nicht separat einfärben kann - jedenfalls ich kann das nicht. Weiß da jemand Rat?

Natürlich gibt es da bestimmt eine ganze Menge zu optimieren und mit sehr hoher Wahrscheinlichkeit habe ich das Rad neu erfunden und es gibt schon tausende Datepickers dieser Art - natürlich bessere! Vielleicht kann da ja jemand hier Verbesserungen vorschlagen.

Re: Datepicker mit größeren Buchstaben

Verfasst: 17.06.2019 22:47
von RSBasic
Bezüglich der Größe: Du musst nicht manuell die Größe der einzelnen Controls ändern. Dafür gibt es von Windows die DPI-Einstellung, die dafür sorgt, dass alle Texte gleichmäßig in der gewünschten Größe skaliert werden. Hast du damit schon versucht?