vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
MonthCalendarWithWarningDates (Teil 2) 
Autor: Manfred X
Datum: 29.05.13 20:19

        Protected Overrides Sub OnPaint(e As PaintEventArgs)
            MyBase.OnPaint(e)
            Dim graphics As Graphics = e.Graphics
 
            Dim dayBoxWidth As Integer = 0
            Dim dayBoxHeight As Integer = 0
            Dim firstWeekPosition As Integer = 0
            Dim lastWeekPosition As Integer = Height
 
            If WarningDates.Count > 0 Then
                Dim calendarRange As SelectionRange = GetDisplayRange(False)
 
                'erstellt eine Liste der Warn-Tage, die im aktuellen 
                ' Anzeigebereich liegen
                Dim visibleWarningDates As New List(Of DateTime)()
                For Each [date] As DateTime In WarningDates
                    If [date] >= calendarRange.Start AndAlso [date] <= _
                      calendarRange.[End] Then
                        visibleWarningDates.Add([date])
                    End If
                Next
 
                If visibleWarningDates.Count > 0 Then
                    While (HitTest(25, firstWeekPosition).HitArea <> _
                      HitArea.PrevMonthDate AndAlso _
                         HitTest(25, firstWeekPosition).HitArea <> _
                         HitArea.[Date]) AndAlso _
                         firstWeekPosition < Height
 
                        firstWeekPosition += 1
                    End While
 
                    While (HitTest(25, lastWeekPosition).HitArea <> _
                      HitArea.NextMonthDate AndAlso _
                           HitTest(25, lastWeekPosition).HitArea <> _
                           HitArea.[Date]) AndAlso _
                         lastWeekPosition >= 0
 
                        lastWeekPosition -= 1
                    End While
 
                    If firstWeekPosition > 0 AndAlso lastWeekPosition > 0 Then
                        dayBoxWidth = Width \ (If(ShowWeekNumbers, 8, 7))
                        dayBoxHeight = CInt(Math.Truncate(CSng(lastWeekPosition _
                          - firstWeekPosition) / 6.0F))
 
                        Using warningbrush As Brush = New SolidBrush( _
                          _WarningBackColor)
 
                            'Schleife über alle aktuell sichtbaren Warn-Tage
                            For Each visDate As DateTime In visibleWarningDates
 
                                'Nur aktuell nicht-markierte Warn-Tage werden 
                                ' hervorgehoben
                                If Not IsDateSelected(visDate) Then
 
                                    Dim row As Integer = 0
                                    Dim col As Integer = 0
 
 
                                    Dim span As TimeSpan = visDate.Subtract( _
                                      calendarRange.Start)
                                    row = span.Days \ 7
                                    col = span.Days Mod 7
 
                                    Dim fillRect As New Rectangle _
                                    ((col + (If(ShowWeekNumbers, 1, 0))) * _
                                    dayBoxWidth + 2, _
                                     firstWeekPosition + row * dayBoxHeight + _
                                     1, _
                                     dayBoxWidth - 2, dayBoxHeight - 2)
 
 
                                    graphics.FillRectangle(warningbrush, _
                                      fillRect)
 
                                    ' Feststellen, ob der aktuelle Warn-Tag 
                                    ' zusätzlich fett darzustellen ist
                                    Dim makeDateBolded As Boolean = False
                                    For Each boldDate As DateTime In BoldedDates
                                        If boldDate = visDate Then
                                            makeDateBolded = True
                                        End If
                                    Next
 
                                    Dim Textfont As Font
                                    If makeDateBolded Then
                                        Textfont = New Font(Font.FontFamily, _
                                          Font.Size, FontStyle.Bold)
                                    Else
                                        Textfont = New Font(Font.FontFamily, _
                                          Font.Size, FontStyle.Regular)
                                    End If
 
                                    TextRenderer.DrawText(graphics, _
                                      visDate.Day.ToString(), _
                                        Textfont, fillRect, _WarningForeColor, _
                                        TextFormatFlags.HorizontalCenter Or _
                                        TextFormatFlags.VerticalCenter)
                                End If
                            Next 'for each
                        End Using 'using brush
                    End If   ' if firstweek ..
                End If ' if visiblewarnings
            End If ' if warnings
        End Sub ' On Paint
 
        Private Function IsDateSelected(ByVal dt As Date) As Boolean
 
            'Die Funktion prüft, ob ein Datum im markierten Bereich liegt
            With MyBase.SelectionRange
                If .Start <= dt And dt <= .End Then
                    Return True
                End If
            End With
            Return False
        End Function
 
    End Class     'class
End Namespace 'namespace
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Farbe eines speziellen Tages im Monatskalender ändern5.454cgiesen15.05.13 10:40
Re: Farbe eines speziellen Tages im Monatskalender ändern4.243effeff15.05.13 12:22
Re: Farbe eines speziellen Tages im Monatskalender ändern4.274cgiesen15.05.13 12:25
Re: Farbe eines speziellen Tages im Monatskalender ändern4.236Brian15.05.13 17:11
Re: Farbe eines speziellen Tages im Monatskalender ändern4.206cgiesen16.05.13 13:31
Re: Farbe eines speziellen Tages im Monatskalender ändern4.229ModeratorDaveS16.05.13 13:42
Re: Farbe eines speziellen Tages im Monatskalender ändern4.187cgiesen16.05.13 13:46
Re: Farbe eines speziellen Tages im Monatskalender ändern4.255ModeratorFZelle16.05.13 14:28
Re: Farbe eines speziellen Tages im Monatskalender ändern4.175cgiesen16.05.13 15:12
Re: Farbe eines speziellen Tages im Monatskalender ändern4.227ModeratorFZelle16.05.13 15:36
Re: Farbe eines speziellen Tages im Monatskalender ändern4.191cgiesen16.05.13 15:43
Re: Farbe eines speziellen Tages im Monatskalender ändern4.148cgiesen16.05.13 15:51
Re: Farbe eines speziellen Tages im Monatskalender ändern4.209cgiesen16.05.13 16:55
Re: Farbe eines speziellen Tages im Monatskalender ändern4.210DotNetErbse29.05.13 15:18
MonthCalendarWithWarningDates (Teil 1)4.232Manfred X29.05.13 20:17
MonthCalendarWithWarningDates (Teil 2)4.212Manfred X29.05.13 20:19

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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