vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls · Sonstiges   |   VB-Versionen: VB5, VB606.03.06
MonthView - Tage bei Monatsauswahl hervorheben

Hier wird gezeigt, wie man sicherstellen kann, dass bestimmte Tage im MonthView bei der Umschaltung des Monats hervorgehoben werden können.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  16.325 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Ü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
Setzt man bspw. ein MsgBox-Aufruf in den Code sieht man, dass die 3 Tage zunächst fett hervorgehoben werden, nach dem Schließen der MsgBox aber wieder normal dargestellt sind.

...
      .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:
Das geht aber auch besser ohne Timer und mit Boradmitteln, denn es gibt einen spez. Event dafür GetDayBold:

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

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel