Hallo,
ich möchte ein Image (Image_List) in einer beliebigen Listbox-Spalte darstellen.
Ich komme noch nicht dahinter.
var imagetest as picture = Image_List // ?!?
ListBox1.AddRow(row.Column("Bezeichnung").StringValue, datum_liste, row.Column("Name").StringValue, betrag_format, row.Column("ID").StringValue, imagetest) <- ?!?
if betrag_suche > 0 then // Beispiel
ListBox1.RowImageAt(ListBox1.LastAddedRowIndex) = imagetest // nur Spalte 1
end If
Mit RowImageAt in Spalte 1 funktioniert es, aber da brauche ich es nicht. RowImageAt hat ja leider keinen Parameter für column?!
Danke,
Sie meinten sicher PaintCellBackround. Damit funktioniert es erstmal.
Aber wie quetsche ich jetzt eine Bedingung aus meiner ListBox dazwischen?
z. B. Betrag_SQL > 0, der ja in einer anderen Methode existiert.
Im PaintCellBackround-Event steht:
If column = 5 then
Var img As Picture = Image_List
If img <> Nil AND Betrag_SQL > 0 Then // Betrag_SQL ist hier nicht bekannt
g.DrawPicture(img, 20, 5, g.Height, g.Height)
End If
Return True
End If
Das sieht schon ganz gut aus. Aber ich fliege noch raus, wenn ich an’s Ende scrolle und bei manchen Suchen.
Listbox:
ListBox1.AddRow(row.Column("Bezeichnung").StringValue, datum_liste, row.Column("Name").StringValue, betrag_format, row.Column("ID").StringValue)
var zeile as integer = ListBox1.LastAddedRowIndex
if betrag_suche > 0 then
ListBox1.CellTagAt(zeile, 5) = Image_File
end If
OutOfBoundsException konnte ich nicht abfangen. War auch immer Fehler 0.
Ich bin aber definitiv eine Zeile zu weit geraten.
Aber so geht es jetzt.
if row < me.RowCount then
If column = 5 then
var img as picture = ListBox1.CellTagAt(row,column)
If img <> Nil Then
g.DrawPicture(img, 20, 5, g.Height, g.Height)
End If
Return True
End If
end If
if row > me.RowCount then return am Anfang wollte nicht. Hab ich was falsch verstanden?
Liste.ListBox1.PaintCellBackground, line 1
The current function must return a value, but this Return statement does not specify any value
if row > me.RowCount then Return
Aber so ist es ja das Gleiche.
Danke!
Eins noch:
Wie kriege ich die Spalte für die Sektierung transparent bei dem Image?
If Me.RowSelectedAt(row) = True Then
g.DrawingColor=Color.HighlightColor
g.FillRectangle(0,0,g.Width,g.Height)
End If
bei dem Parameter Reihe muss man immer aufpassen das der zur Liste passt weil
die letzte Zeile nur optisch zur Ausfüllung dient.
column = 5
hier ist es ggfs. besser eine Enum oder Constante zu benutzen statt einfach nur die Zahl 5.
Blickt man spaeter besser durch wenn man mehrere Vergleiche hat oder Spalten hinzu kommen oder sich verschieben.
ich denke wenn man selbst das Hintergrund malen Ereignis benutzt wird auch nicht mehr die Zeilenauswahl gemalt und man sieht die Farbe der Listbox hinter dem Icon.