moin,
ich hab mich mal heute mit dem
GetDayState() Event beschäftigt und frage mich ob ich den
nicht einfach "verdrehe". :-"
Was ich damit meine ist das ich das
MonthView object eigenlich nur zur Anzeige nehme um meine Daten aus der DBF anzuzeigen.
Für die Erfassung/Edit benutze ich eh das
DTPicker object.
Also "male" ich eigendlich nur paar optische BOLD in den 3 Monats Kalendar.
Code: Alles auswählen
oDlg:oMonthView:MonthColumns := 1
oDlg:oMonthView:MonthRows := 3
oDlg:DBF_Showdate( DATE(), Time() )
oDlg:DBF_Showdate( DATE()+30, Time() )
oDlg:DBF_Showdate( DATE()+60, Time() )
Nun meine überlegung : ich "übermale" die
MonthView "Title" object mit eigenen Buttons
und fange die Events ab. So ähnlich hab ich es auch bei meinem WMPlayer gemacht weil ich
nicht seine "Playlist"(en) benutzen wollte sondern "mein" XbpBrowse/XbpListbox.
Nun hab ich also links meinen 3 Monats Kalendar und rechts mein XbpBrowse. Wenn ich nun
in den Kalendar auf einen Tag clicke (DateClick event) dann hole ich mir den :value und mach
ein SEEK() auf die DBF um ihn im XbpBrowse neu zu syncronisieren ( :refeshall() )
umgekehrt kann ich auch aus dem XbpBrowse dann den 3 Monats Kalendar "übermalen"
wenn ich den 3 Monat wechsel durchführe.
Das "malen" geht so schnell wie ein oStatic:Setcaption("blabla") sodas der User eigendlich
"nichts merkt" von der Aktion wenn ich die neuen Termine BOLDe.
Code: Alles auswählen
METHOD NewForm:DATE2VTT(nRec,cDate)
LOCAL nOldRec := nRec
LOCAL cMonth := SUBSTR(cDate,1,6) // YYYYMM
LOCAL cString := ""
DO WHILE !EOF()
IF cMonth = SUBSTR( DtoS(TERMIN->DATUM),1,6)
cString := DtoS(TERMIN->DATUM)+TERMIN->ZEIT
::oMonthView:treatDateAsString(.T.):setProperty("DayBold",;
VTType():new( cString, VT_DATE) ,.T.)
ELSE
EXIT
ENDIF
SKIP
ENDDO
GOTO (nOldRec)
RETURN self
ich weiss, wie Hannes sagte, das es hier "mit Trick" zugeht, aber das Resultat reicht mir.
... was mir noch "fehlt" ist ein wenig "Bewegung" ... bin schon am überlegen ob ich meine
Analoge Clock Class mit in den XbpDialog einbaue ...
![Smile :)](./images/smilies/smile.gif)