Ü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.325 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. |
sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. 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. |