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