vcl-155050-expressbars-how-to-arrange-toolbars.md
When a user moves toolbars at runtime, separations between individual toolbars may be created based on the placement of these toolbars. The following code demonstrates how you can arrange toolbars docked to a form’s top, to eliminate this free space.
// ...
procedure TMainForm.ArrangeBarsButtonClick(Sender: TObject);
var
I, J, Offset: Integer;
DockRow: TdxDockRow;
begin
with dxBarManager do
begin
BeginUpdate;
try
for J := 0 to Bars.DockControls[dsTop].RowList.Count - 1 do
begin
DockRow := TdxDockRow(Bars.DockControls[dsTop].RowList[J]);
Offset := 0;
for I := 0 to DockRow.ColList.Count - 1 do
with TdxDockCol(DockRow.ColList[I]) do
begin
Pos := Point(Offset, Pos.Y);
Inc(Offset, BarControl.Width);
end;
end;
finally
EndUpdate;
end;
end;
end;
// ...
void __fastcall TMainForm::ArrangeBarsButtonClick(TObject *Sender)
{
int I, J, Offset;
TdxDockRow * DockRow;
TdxDockCol * DockCol;
dxBarManager->BeginUpdate();
try {
for(J=0;J<dxBarManager->Bars->DockControls[dsTop]->RowList->Count;J++)
{
DockRow = (TdxDockRow *)(dxBarManager->Bars->DockControls[dsTop]->RowList->Items[J]);
Offset = 0;
for(I=0;I<DockRow->ColList->Count;I++)
DockCol = (TdxDockCol *) DockRow->ColList->Items[I];
DockCol->Pos = Point(Offset, DockCol->Pos.y);
Offset += DockCol->BarControl->Width;
}
}
__finally {
dxBarManager->EndUpdate();
}
}