vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
Datumsvergleich in ListBox 
Autor: Erichbru
Datum: 13.07.24 18:03

ich versuche gerade im ListBox1_DrawItem event bildchen zum Datum zuzuordnen <>



Optisch ist es schon so wie es soll......
nur passt es noch nicht ganz

in die ListBox werden Textdateien geladen je Datum als Dateiname (String)
die ListBox hat so gesehen keine Databindung oder Datasource, Datatable

so richtig will es noch nicht klappen, Ergebnis scheint nicht plausibel. Es scheint immer das erste Datum zu vergleichen
wie könnte ich das abändern ?

der 13.07.2024 müsste "Aufgaben für heute" heißen
der 14.07.2024 müsste "Aufgaben für morgen" heißen

  Private Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As _
    System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
 
        Dim imageSize As Size
        Dim ItemImageneu As Image = Nothing
        Dim ItemImagealt As Image = Nothing
        Dim ItemImagegelb As Image = Nothing
        Dim ItemImagegruen As Image = Nothing
        '--
        Dim titleFont As Font = New System.Drawing.Font("Cambria", 8.25!, _
          System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, _
          CType(0, Byte))
        Dim detailsFont As Font = New System.Drawing.Font("Cambria", 9.25!, _
        System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType( _
        0, Byte))
        Dim sf As StringFormat = StringFormat.GenericTypographic
        sf.Alignment = StringAlignment.Center
        sf.LineAlignment = StringAlignment.Center
        '--
        Dim myBackColor As Color = Color.FloralWhite
        Dim myForeColor As Color = Color.DarkBlue
        Dim myBackgroundBrush = New SolidBrush(myBackColor)
        Dim myForegroundBrush = New SolidBrush(myForeColor)
 
        Dim Vergleichsdatum As Date
        Dim Eingabe As Date
 
        '--
        imageSize = New Size(35, 35)
        ListBox1.ItemHeight = imageSize.Height + Me.Margin.Vertical
        ' Bilder aus My.resources holen
        ItemImageneu = My.Resources.Add1
        ItemImagealt = My.Resources.Rot
        ItemImagegelb = My.Resources.Gelb
        ItemImagegruen = My.Resources.Gruen
 
        If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
            myBackColor = Color.CornflowerBlue
            myForeColor = Color.White
            e.Graphics.FillRectangle(myBackgroundBrush, e.Bounds)
        Else
            e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds)
        End If
 
        e.Graphics.DrawLine(Pens.DarkGray, e.Bounds.X, e.Bounds.Y, e.Bounds.X + _
          e.Bounds.Width, e.Bounds.Y)
        Dim titleBounds As Rectangle = New Rectangle(e.Bounds.X + _
        Margin.Horizontal + imageSize.Width, e.Bounds.Y + Margin.Top, _
        e.Bounds.Width - Margin.Right - imageSize.Width - Margin.Horizontal, _
        CInt(titleFont.GetHeight()) + 2)
        Dim detailBounds As Rectangle = New Rectangle(e.Bounds.X + _
        Margin.Horizontal + imageSize.Width, e.Bounds.Y + CInt( _
        titleFont.GetHeight()) + 1 + Margin.Vertical + Margin.Top, _
        e.Bounds.Width - Margin.Right - imageSize.Width - Margin.Horizontal, _
        e.Bounds.Height - Margin.Bottom - CInt(titleFont.GetHeight()) - 2 - _
        Margin.Vertical - Margin.Top)
 
'das ist sicher der falsche Ansatz ??
 
        Eingabe = CDate(ListBox1.GetItemText(ListBox1.Items(e.Index)))
 
        If Date.TryParseExact(Eingabe, "dd.MM.yyyy", New _
          Globalization.CultureInfo("de-DE"), _
          Globalization.DateTimeStyles.None, Vergleichsdatum) Then
            'korrekt
            Select Case DateDiff(DateInterval.Day, Now, Vergleichsdatum)
 
                Case Is > 0
                    e.Graphics.DrawImage(ItemImageneu, e.Bounds.X + _
                      Margin.Left, e.Bounds.Y + Margin.Top, imageSize.Width, _
                      imageSize.Height)
                    e.Graphics.DrawString("Neue Aufgaben:", titleFont, _
                    myForegroundBrush, titleBounds, sf)
                Case Is < 0
                    e.Graphics.DrawImage(ItemImagealt, e.Bounds.X + _
                      Margin.Left, e.Bounds.Y + Margin.Top, imageSize.Width, _
                      imageSize.Height)
                    e.Graphics.DrawString("Liste veraltet:", titleFont, _
                    myForegroundBrush, titleBounds, sf)
                Case Is = 0
                    e.Graphics.DrawImage(ItemImagegruen, e.Bounds.X + _
                      Margin.Left, e.Bounds.Y + Margin.Top, imageSize.Width, _
                      imageSize.Height)
                    e.Graphics.DrawString("Aufgaben geplant:", titleFont, _
                    myForegroundBrush, titleBounds, sf)
                Case Else
                    e.Graphics.DrawImage(ItemImagegelb, e.Bounds.X + _
                      Margin.Left, e.Bounds.Y + Margin.Top, imageSize.Width, _
                      imageSize.Height)
                    e.Graphics.DrawString("Aufgaben demnächst:", titleFont, _
                    myForegroundBrush, titleBounds, sf)
            End Select
        End If
 
        e.Graphics.DrawString(ListBox1.GetItemText(ListBox1.Items(e.Index)), _
          detailsFont, myForegroundBrush, detailBounds, sf)
 
        e.DrawFocusRectangle()
    End Sub


Beitrag wurde zuletzt am 13.07.24 um 18:19:00 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Datumsvergleich in ListBox366Erichbru13.07.24 18:03
Re: Datumsvergleich in ListBox173ModeratorDieter19.07.24 08:47

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-2025 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