Jede Spalte hat eine eigene ID, und über die musst Du in der TcxCustomDataSource die Daten holen, und nicht durch die Spaltennummer. Dazu kannst Du die Databinding.Data-Eigenschaft der einzelnen Spalten benutzen (dort eine eindeutige ID zuweisen).
Du überschreibst die Methode im TcxCustomDatsource-Derivat:
Delphi-Quellcode:
Function TMycxDataSource.GetItemHandle(AItemIndex: Integer): TcxDataItemHandle; // [protected override]
Var
g: TcxCustomGridTableItem;
Begin
g := TcxCustomGridTableItem(DataController.GetItem(AItemIndex));
Result := TcxDataItemHandle(g.databinding.Data);
End;
Und in der Initialisierung deines TcxGrids weisst Du einfach die 'ID' (also deine Spaltenkennung) der Databinding.Data-Eigenschaft zu.
aColumn.DataBinding.Data := Pointer(aID);
Fertig. Ach ja, steht auch so in der DevExpress-Hilfe