Zitat von
Tempdir:
Wow vielen Dank an DevilsCamp für diese Lösung. Das sieht sehr gut aus und funktioniert
Ich grübel nur gerade an der Erweiterung der Formel, da sie nicht mehr stimmt, sobald man eine neue Zeile in die Listbox einfügt. Irgendwie muss da noch ein Korrekturfaktor mit rein.
Als Beispiel:
Delphi-Quellcode:
. X
Spalte 1 | Spalte 2 | Spalte 3
0 5 10
Y 1 6 11
2 7 12
3 8 13
4 9 14
Z.B.: X = 1; Y = 3
Einsetzen in: x * Listbox1.Columns + y; => 1*3 + 3 = 6, sollte aber 8 sein.
Args. Hast Recht.
Es müsste korrekterweise lauten:
Index := x * AnzahlZeilen + y // x und y weiterhin 0-basiert
Da ich aber gerade kein Delphi zur Verfügung habe, kann ich dir leider nicht sagen, wie man genau bestimmt, wieviele Zeilen pro Spalte verwendet werden. Evtl. über ItemHeight und Height berechnen. Wenn jetzt aber bei drei Spalten und 4 sichtbaren Zeilen mehr als 12 Einträge vorhanden sein, könnte die Formel auch wieder schiefgehen.
Bei Lazarus würde es klappen, da hier nur
TListbox.Columns Spalten sichtbar sind, aber eine horizontale Scrollleiste angezeigt wird. Sollte das unter Delphi ebenfalls so sein, so sollte die neue Formel generell passen.