Einzelnen Beitrag anzeigen

DevilsCamp
(Gast)

n/a Beiträge
 
#11

Re: Aus listbox mit mehreren Felder bestimmtes Feld ändern

  Alt 19. Mär 2009, 09:04
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.
  Mit Zitat antworten Zitat