Am Einfachsten wird es mit einer datensensitieven Verbindung sein,
also Memory-DataSet oder TList<TYourDataObject> via LiveBinding ans Grind anbinden
und dann über die Liste die Daten verwalten. Die Zuordnung zu den richtigen Cells/Rows/Colums wird dann automatisch vorgenommen.
(im
VCL war es z.B. TClientDataSet+TDataSource ans TDBGrid)
Ich weiß nicht wie es beim Delphi-Grid aussieht,
aber entweder du mußt über den Spalten-Namen auf die Columns zugreifen, anstatt über einen veränderlichen Index.
Falls sich im FMX-Grod die Objekte der Spalten nicht ändern (neu erstellt werden), wenn man sie verschiebt, dann kann man sich auch zu Beginn die
Zeiger Objektreferenzen merken.
(im VCL-Grid gind sowas nicht, wenn ich mich richtig erinnere)
Oder, viele Grid-Komponenten (ordentlicher Hersteller) haben die sichtbaren Rows und Coumns
und inten zusätlich noch interne DataRows und
Columns Fields,
bzw die sichrbaren Rows/Columns haben zwei Indize, einmal für die Anzeige und so wie sie erstellt wurden (ursprünglich waren).
Du brauchst den "unveränderlichen" "Erstellungs"-Index, wenn du auf die sichtbaren Columns zugreifen willst.
[EDIT] Schau mal was OriginalIndex oder ComponentIndex statt Index in den TStringColumn ausgeben. Aber über den Namen wird es bestimmt besser, vor allem der Code auch lesbarer.
PS: Filtern und Sortieren gibt es bei dir auch? (irgendwann mal)
Wenn ja, dann nicht vergessen, dass auch der richtige Row-Index wichtig ist.