Über die DayBold-Eigenschaft des Microsoft MonthView-Controls lassen sich bestimmte Tage im Kalender fett hervorheben. Nehmen wir an, es sollen die Tage 23, 24 und 25 im Monat März fett dargestellt werden. Wie würde man hier am besten vorgehen? Wechselt der Anwender den Monat durch Klick auf die beiden Pfeilsymbole wird das SelChange-Ereignis ausgelöst. Man sollte also meinen, hier wäre das richtige Ereignis, um den Monat abzufragen und die Tage entsprechend hervorzuheben: Private Sub MonthView1_SelChange(ByVal StartDate As Date, ByVal EndDate As Date, Cancel As Boolean) With MonthView1 ' Wenn der Monat März 2006 ausgewäht wird If Month(StartDate) = 3 And Year(StartDate) = 2006 Then ' Tage 23, 24 und 25 fett hervorheben .DayBold("23.03.06") = True .DayBold("24.03.06") = True .DayBold("25.03.06") = True End If End With End Sub Irgendwie funktioniert das Ganze aber nicht ... .DayBold("23.03.06") = True .DayBold("24.03.06") = True .DayBold("25.03.06") = True MsgBox "Test" ... Grund hierfür ist, dass man die Monatsauswahl durch den Anwender über den Cancel-Parameter abbrechen kann und das Control die DayBold-Eigenschaften scheinbar nach Abarbeitung des Ereignisses erst einmal wieder zurücksetzt. Die Tage, die fett hervorgehoben werden sollen, dürfen demnach erst dann festgelegt werden, wenn das Ereignis SelChange vollständig abgearbeitet wurde. Nur gibt es im MonthView-Control leider kein AfterMonthChange-Ereignis oder ähnliches Eine Möglichkeit gibt es aber dennoch: Wir verwenden einfach einen Timer mit einem ganz kurzen Zeitintervall. Der Timer wird im SelChange-Ereignis gestartet und nach Ablauf des Intervalls auch sofort wieder beendet. Den Code für die Hervorhebung der Tage setzen wir dann einfach ins Timer-Ereignis. Private Sub MonthView1_SelChange(ByVal StartDate As Date, ByVal EndDate As Date, Cancel As Boolean) ' Timer mit kurzem Zeitintervall starten Timer1.Interval = 50 Timer1.Enabled = True End Sub Private Sub Timer1_Timer() ' Timer wieder ausschalten Timer1.Enabled = False With MonthView1 ' Wenn der Monat März 2006 ausgewäht wird If .Month = mvwMarch And .Year = 2006 Then ' Tage 23, 24 und 25 fett hervorheben .DayBold("23.03.06") = True .DayBold("24.03.06") = True .DayBold("25.03.06") = True End If End With End Sub Ergänzung von Frank Wenner: Private Sub MonthView1_GetDayBold(ByVal StartDate As Date, ByVal Count As Integer, State() As Boolean) ' Wenn der Monat März 2006 ausgewäht wird If MonthView1.Month = mvwMarch And MonthView1.Year = 2006 Then ' Tage 23, 24 und 25 fett hervorheben State(23) = True State(24) = True State(25) = True End If End Sub Dieser Tipp wurde bereits 16.342 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevGraph (VB/VBA) Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |