Добрый вечер.
Проанализировал я Ваш вопрос.
Постулируем следующее :
В один момент открыта только одна подчиненная строчка (остальные закрываются)
Используя плагин RowWidget Вы можете это сделать.
Возьмите демку gedit киньте туда контейнер панель, закиньте туда два дбедита с FirstName и LastName
После этого допишите в код следующий текст
type TMyGrid=class(TUniDBGrid);
procedure TMainForm.UniFormCreate(Sender: TObject);
begin
TMyGrid(UniDBGrid1).JSConfigPlugin('Ext.grid.plugin.RowWidget',['pluginId',-100,'selectRowOnExpand',true,'widget',TMyGrid(UniDBGrid1).JsObject('xtype:"panel", height:200')]);
UniSession.AddJS(TMyGrid(UniDBGrid1).JSName+'.getView().lastId=-1;');
UniSession.AddJS(TMyGrid(UniDBGrid1).JSName+'.getView().addListener("expandbody",function(rowNode, record, nextBd, widget)'+'{if (this.grid.getPlugin(-100) && this.lastId!=-1) this.grid.getPlugin(-100).toggleRow(this.lastId,record); this.lastId=record.id; widget.setHeight('+IntToStr(UniHiddenPanel2.Height)+');'+UniHiddenPanel2.JsName+'.setPosition(0,0); widget.add('+UniHiddenPanel2.JSName+');},'+TMyGrid(UniDBGrid1).JSName+'.getView());');
UniSession.AddJS(TMyGrid(UniDBGrid1).JSName+'.getView().addListener("collapsebody",function(rowNode, record, nextBd, widget){ this.lastId=-1;},'+TMyGrid(UniDBGrid1).JSName+'.getView());');
end;
//Вместо UniHiddenPanel2 напишите название Вашей контейнер панели.
Думаю с гридом получится также
"Я нашёл этому поистине чудесное доказательство, но поля книги слишком узки для него."
Всего доброго.