cxGrid и вложенный cxTreeView

LomoVOD
Дата: 03.05.2011 14:01:37
Добрый день,

Пытаюсь в cxGridе сделать вложенный cxTreeView, делаю примерно так:

procedure TForm1.cxGrid1DBTableView1DataControllerDetailExpanded(
ADataController: TcxCustomDataController; ARecordIndex: Integer);
var
ASite: TcxGridSite;
ATreeView: TcxTreeView;
begin
ASite := TcxGridDataController(ADataController.GetDetailDataController(ARecordIndex, 0)).GridView.Site;
ATreeView := TcxTreeView.Create(ASite);
ATreeView.Parent := ASite;
ATreeView.Align := alClient;
end;

идея позаимствована из примера отсюда

Вроде все работает, но проблема в том что высота получившегося вложенного грида - ровно "2 строчки". А мне необходимо сделать, чтобы высота вложенного грида изменялась в зависимости от отображаемых в нем в данный момент элементов (как у "нормальных" вложенных гридов).
Подскажите пожалуйста, как это можно реализовать ?
DimaBr
Дата: 03.05.2011 23:39:47
Так как у вас на втором уровне прицеплена вьюшка, управляйте её свойством OptionsView.HeaderHeight
procedure TForm1.cxGrid1DBTableView1DataControllerDetailExpanding(ADataController: TcxCustomDataController; ARecordIndex: Integer; var AAllow: Boolean);
begin
  cxDBTreeList1.Parent := nil;
  ADataController.CollapseDetails;
end;

procedure TForm1.cxGrid1DBTableView1DataControllerDetailExpanded(ADataController: TcxCustomDataController; ARecordIndex: Integer);
var ASite: TcxGridSite;
begin
  ASite := TcxGridDataController(ADataController.GetDetailDataController(ARecordIndex, 0)).GridView.Site;
  cxDBTreeList1.Parent := ASite;
  cxDBTreeList1.Align := alClient;
  cxGrid1TableView1.OptionsView.HeaderHeight := Random(100);
end;