Das der RecordIndex hier dem RowIndex entspricht muss nicht immer so sein.
Delphi-Quellcode:
class function TToolsDevExpress.SelectRecord(View: TcxGridTableView; FieldNameID: string; CurrentID: Integer): Boolean;
var
I: Integer;
ColumnIndex: Integer;
recidx : Integer;
begin
Result := False;
ColumnIndex := TcxGridDBDataController(View.DataController).GetItemByFieldName(FieldNameID).Index;
View.DataController.ClearSelection;
for I := 0 to View.DataController.RowCount - 1 do
begin
recidx := View.ViewData.Rows[I].RecordIndex;
if View.DataController.Values[recidx, ColumnIndex] = CurrentID then <-- I ist hier der Rowindex, DataController.Values will aber den RecordIndex und das kann hier zu Fehlern führen
begin
View.DataController.FocusedRecordIndex := recidx;
View.Controller.FocusedRecord.Selected := True;
Result := True;
if Result then
begin
Break;
end;
end;
end;
end;