procedure TForm1.ToolButton2Click(Sender: TObject);
var
R,rx: TcxCustomGridRecord;
i:integer;
RecordIndex, RecordId: integer;
tmpDataCont2, tmpDataCont3: TcxCustomDataController;
DetailDataController : TcxCustomDataController;
DetailTableView : TcxGridTableView;
Index, RelIndex : Integer;
ScM, ScD : Integer;
begin
cxGrid1.SetFocus;
cxGrid1x.BeginUpdate;
try
dm.rezer.refresh; //master grid refresh;
dm.rezkay.refresh; //detail grid refresh;
if masteritem=0 then begin {masteritem:integer ve master gridde cell de masteritem:=cxGrid1x.DataController.DataSource.DataSet.fieldbyname('id').asinteger;}
cxGrid1x.DataController.GridView.ViewData.Records[0].Focused:=true;
exit;
end;
//master gridde id locate ve focus olmak
TcxGridDBTableView(cxGrid1.FocusedView).DataController.BeginUpdate;
TcxGridDBTableView(cxGrid1.FocusedView).DataController.LocateByKey(masteritem);
R := cxGrid1x.Controller.FocusedRecord;
TcxGridDBTableView(cxGrid1.FocusedView).DataController.EndUpdate;
cxGrid1x.ViewData.Records[R.Index].Expanded := True;
if detialindex='' then exit; { detialindex:integer en son detail de hangi record.index tıklandı detail grid cell de detialindex:=ACellViewInfo.GridRecord.Index;}
if not cxGrid1x.ViewData.Records[R.Index].Expanded then exit;
Index := cxGrid1x.ViewData.Records[R.Index].RecordIndex;
RelIndex := cxGrid1x.ViewData.Records[R.Index].ViewData.DataController.GetDetailActiveRelationIndex(Index);
DetailDataController := cxGrid1x.DataController.GetDetailDataController(Index, RelIndex);
DetailTableView := TcxGridTableView(TcxGridDBDataController(DetailDataController).Controller.GridView);
DetailTableView.ViewData.Records[detialindex].Selected:=true;
finally;
cxGrid1x.EndUpdate;
end;
O sroun şu şekildede çözümlenio
master ve detail tabloları tableview de keyfield ten bağlama yaptığınız yerde tüm alanları doldurursanız bu problem çözülmüş oluyo