Back to Devexpress

How to Arrange Toolbars

vcl-155050-expressbars-how-to-arrange-toolbars.md

latest1.6 KB
Original Source

How to Arrange Toolbars

  • Dec 28, 2020

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.

delphi
// ...
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;
cpp
// ...
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();
  }
}