Seite 1 von 1

DateGadget

Verfasst: 23.10.2007 20:48
von Thomas
Gibt es ne Möglichkeit ein DateGadget so zu manipulieren, dass man nur Datums ohne Jahr auswählen kann?

Verfasst: 23.10.2007 21:12
von Falko
Ich weiß nun nicht ob ich das hier richtig verstanden habe,
was du haben willst. Aber die Maske lässt sich schon ändern
und zeigt dann das aktuelle Datum an. Das Jahr ist dann, wenn man es
zum Bsp auf 2047 ändert ein lustiges Ergebnis.

Ich bekomme dann zwar unten das Jahr korrekt angezeigt mit meinem
jetzigen Datum. Aber im Kopf steht dann komischerweise 1947 :lol:
Liegt wohl am Jahr 2000-Problem nun an Vista :lol:

Code: Alles auswählen

If OpenWindow(0, 0, 0, 200, 250, "DateGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(0))
      DateGadget(0, 10, 10, 60, 25, "%dd.%mm")
      Repeat: Until WaitWindowEvent() = #PB_Event_CloseWindow
    EndIf
EndIf
Gruß Falko

Verfasst: 24.10.2007 14:09
von Thomas
Ich meinte das so:
Es soll auch das 2007 aus dem DropDown selbst verschwinden nicht nur aus dem Kopf.

Verfasst: 26.10.2007 22:43
von Falko
Hier habe ich was passendes gefunden und etwas damit herumgespielt.

http://www.purebasic.fr/english/viewtop ... 9418#69418

Code: Alles auswählen

#MCM_GETCURSEL = $1001

Global hcal
Global hwnd, hwnd1

Declare datepick()

Structure InitCommon
  dwSize.l
  dwICC.l
EndStructure

Global my.InitCommon
my\dwSize = 8
my\dwICC = $100

InitCommonControlsEx_(@my)

hwnd=OpenWindow(0,300,400,300,100.0,"Calender THIS!",#PB_Window_SystemMenu)
If hwnd=0 Or CreateGadgetList(hwnd)=0:End:EndIf
;ActivateWindow()
ButtonGadget(1,30,10,50,20,"Date Me!")
ButtonGadget(2,30,50,50,20,"EXIT!")

Repeat
  EventID.l = WaitWindowEvent()
 
  If EventID = #PB_Event_Gadget
    Select EventGadget()
      Case 1
         datepick()
      Case 2
        End
    EndSelect
  EndIf
Until EventID = #PB_Event_CloseWindow

Procedure Datepick()

  hwnd1=OpenWindow(1,600,400,350,400.0,"API-Kalender",#PB_Window_SystemMenu)
  If hwnd1=0 Or CreateGadgetList(hwnd1)=0:End:EndIf
  ;ActivateWindow()

  hCal=CreateWindowEx_(0,"SysMonthCal32","Calender",#WS_CHILD|#WS_VISIBLE,10,80,300,300,hwnd1,0,GetModuleHandle_(0),0)
  ;ein wenig Farbe ins Spiel bringen
  SendMessage_(hCal,4106,0,$800000);MCM_SC_BACKGROUND
  SendMessage_(hCal,4106,4,$800000);MCM_SC_MONTHBACK
  SendMessage_(hCal,4106,2,$800000);MCM_SC_TITLE
  SendMessage_(hCal,4106,1,$00FFFF);MCM_SC_TEXT
  SendMessage_(hCal,4106,3,$800000);MCM_SC_TITLETEXT

  ButtonGadget(3,10,10,50,20,"OK")

  Repeat
    EventID.l = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
        Case 3
          SendMessage_(hCal,#MCM_GETCURSEL,0,@time.SYSTEMTIME )
          year=time\wYear
          month=time\wMonth
          day=time\wDay
          info.s = Str(day)+"."+Str(month);+"."+Str(year)
          MessageRequester("",info,0)
          t = DestroyWindow_(hcal)
          If t<> 0
            CloseWindow_(hwnd1)
          EndIf
          Break
      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow
EndProcedure 
Gruß ..Falko

Verfasst: 27.10.2007 06:42
von Thomas
Danke, interessanter Code :mrgreen: