ControlMargins (Delphi)
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
- Vcl.Controls.TControl.AlignWithMargins ( fr | de | ja )
- Vcl.Controls.TControl.Margins ( fr | de | ja )
- Vcl.Controls.TMargins ( fr | de | ja )
- Vcl.Controls.TControl.SetBounds ( fr | de | ja )