Hello
Here are some examples of working with groups at runtime.
In the last example grouping by two fields.
Code:
//Activate DataGrouping
procedure TForm1.Button1Click(Sender: TObject);
begin
DBGridEh1.DataGrouping.Active := True;
DBGridEh1.DataGrouping.GroupPanelVisible := True;
end;
//Add GroupLevel for 'Continent' Field
procedure TForm1.Button2Click(Sender: TObject);
var
gl: TGridDataGroupLevelEh;
begin
gl := DBGridEh1.DataGrouping.GroupLevels.Add();
gl.Column := DBGridEh1.FieldColumns['Continent'];
//Expand all nodes of the First Level
DBGridEh1.DataGrouping.GroupLevels[0].ExpandNodes;
end;
//Delete first GroupLevel
procedure TForm1.Button3Click(Sender: TObject);
begin
if (DBGridEh1.DataGrouping.GroupLevels.Count > 0) then
DBGridEh1.DataGrouping.GroupLevels.Delete(0);
end;
//Replace Field for the first GroupLevel
procedure TForm1.Button4Click(Sender: TObject);
begin
if DBGridEh1.DataGrouping.GroupLevels.Count = 0 then Exit;
if (TColumnEh(DBGridEh1.DataGrouping.GroupLevels[0].Column).FieldName = 'Continent')
then DBGridEh1.DataGrouping.GroupLevels[0].Column := DBGridEh1.FieldColumns['Capital']
else DBGridEh1.DataGrouping.GroupLevels[0].Column := DBGridEh1.FieldColumns['Continent'];
//Expand all nodes of the First Level
DBGridEh1.DataGrouping.GroupLevels[0].ExpandNodes;
end;
//Add several GroupLevels
procedure TForm1.Button5Click(Sender: TObject);
begin
DBGridEh1.DataGrouping.GroupLevels.BeginUpdate;
DBGridEh1.DataGrouping.GroupLevels.Clear;
DBGridEh1.DataGrouping.GroupLevels.Add().Column := DBGridEh1.FieldColumns['Continent'];
DBGridEh1.DataGrouping.GroupLevels.Add().Column := DBGridEh1.FieldColumns['Capital'];
DBGridEh1.DataGrouping.GroupLevels.EndUpdate;
//Expand all nodes of the First Level
DBGridEh1.DataGrouping.GroupLevels[0].ExpandNodes;
end;