SIgor33 Цитата: Посоветуйте как обойти это, может обработчик другой какой нужен?
Лучше, на мой взгляд, в вашей ситуации использовать обработчик onFocusedRecordChanged.
Следующий код должен решить обе ваши проблемы:
Код: procedure <Your>TForm.<Your>cxGridDBTableViewDataControllerDetailExpanded(ADataController: TcxCustomDataController;
ARecordIndex: Integer);
begin
ADataController.CollapseDetails;
ADataController.FocusedRecordIndex := ARecordIndex;
ADataController.CheckFocusedSelected;
try
<Your>cxGridDBTableView.DataController.OnDetailExpanded := nil;
ADataController.ChangeDetailExpanding(ARecordIndex, True);
finally
<Your>cxGridDBTableView.DataController.OnDetailExpanded := <Your>cxGridDBTableViewDataControllerDetailExpanded;
end;
end;
procedure <Your>TForm.<Your>cxGridDBTableViewFocusedRecordChanged(Sender:
TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord:
TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
if not (TcxDBDataController(Sender.DataController).DataSet.State in [dsInsert]) then
Sender.DataController.CollapseDetails;
end;
procedure <Your>TForm.<Your>DataSetBeforeInsert(DataSet: TDataSet);
begin
<Your>cxGridDBTableView.DataController.CollapseDetails;
end;