ControlMargins (Delphi)

From RAD Studio Code Examples
Jump to: navigation, search

Description

This example evidences the usage of the Margins and AlignWithMargins properties. Note that Margins only work when AlignWithMargins is set to True and Align is not alNone.

Code

const
  TopPanelMargin = 10;
  BottomPanelMargin = 30;

var
  TopPanel, BottomPanel : TPanel;

procedure TForm2.FormCreate(Sender: TObject);
begin
  { Create a new panel and align it to top }
  TopPanel := TPanel.Create(Self);
  TopPanel.Parent := Self;
  TopPanel.Align := alTop;
  TopPanel.Height := (ClientHeight div 2);

  { Create a new panel and align it to the remaining client size. }
  BottomPanel := TPanel.Create(Self);
  BottomPanel.Parent := Self;
  BottomPanel.Align := alClient;

  { Set Top panel margins. }
  { Note: Margins will not have an effect if Align is alNone }
  TopPanel.Margins.SetBounds(TopPanelMargin, TopPanelMargin,
                             TopPanelMargin, TopPanelMargin);
  TopPanel.AlignWithMargins := true;
  TopPanel.Caption:= 'TopPanel';

  { Set Bottom panel margins. }
  { Note: Margins will not have an effect if Align is alNone. }
  BottomPanel.Margins.SetBounds(BottomPanelMargin, BottomPanelMargin,
                               BottomPanelMargin, BottomPanelMargin);
  BottomPanel.AlignWithMargins := true;
  BottomPanel.Caption:= 'BottomPanel';

  if (TopPanel.Top <> TopPanelMargin) or
     (TopPanel.Left <> TopPanelMargin) or
     (TopPanel.Width <> (ClientWidth - (TopPanelMargin * 2))) or
     (BottomPanel.Top <> (TopPanel.Height + (TopPanelMargin * 2) +
                                               BottomPanelMargin)) or
     (BottomPanel.Left <> BottomPanelMargin) or
     (BottomPanel.Width <> (ClientWidth - (BottomPanelMargin * 2)))
     then
       MessageDlg('This should not happen! Position and size are ' +
            'calculated relative to the margins', mtError, [mbOK], 0);
end;

Uses