Aktuelle Zeit: 04.07.2020 03:58

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Datepicker mit größeren Buchstaben
BeitragVerfasst: 17.06.2019 21:37 
Offline

Registriert: 06.03.2019 21:52
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:

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.

_________________
Der beste Fisch ist der Schnitzel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Datepicker mit größeren Buchstaben
BeitragVerfasst: 17.06.2019 22:47 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
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?

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye