RAD Studio VCL Reference
ContentsIndex
PreviousUpNext
TControl.AlignWithMargins Property

Indicates whether a control should be constrained by margins.

Pascal
property AlignWithMargins: Boolean;
C++
__property Boolean AlignWithMargins;

If AlignWithMargins is true, use the Margins property of the control to govern the spacing relative to other controls that are aligned with this one. The controls are not allowed to be any closer than the spacing specified in Margins. This spacing is maintained as controls are moved when the parent control resizes. 

AlignWithMargins is true if the style csAlignWithMargins, a TControlStyle type, is in the control's ControlStyle property and false otherwise.  

C++ Examples: 

 

//
//This example demostrates the usage of Margins and AlignWithMargins
//properties. Note that Margins will only work when AlignWithMargins
//is set to true and Align is not alNone.
//

#define TopPanelMargin 10
#define BottomPanelMargin 20

TPanel *TopPanel, *BottomPanel;

void __fastcall TForm2::FormCreate(TObject *Sender)
{
    /* Create a new panel and align it to top */
    TopPanel = new TPanel(this);
    TopPanel->Parent = this;
    TopPanel->Align = alTop;
    TopPanel->Height = (ClientHeight / 2);

    /* Create a new panel and align it to the remaining client size */
    BottomPanel = new TPanel(this);
    BottomPanel->Parent = this;
    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 Top Bottom 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) ||
       (TopPanel->Left != TopPanelMargin) ||
       (TopPanel->Width != (ClientWidth - (TopPanelMargin * 2))) ||
       (BottomPanel->Top != (TopPanel->Height + (TopPanelMargin * 2) +
                                               BottomPanelMargin)) ||
       (BottomPanel->Left != BottomPanelMargin) ||
       (BottomPanel->Width != (ClientWidth - (BottomPanelMargin * 2))))
       {
          MessageDlg(AnsiString(
            "This should not happen! Position and size are ")+
            "calculated relative to the margins",
            mtError, TMsgDlgButtons() << mbOK, 0);
       }
}

 

Delphi Examples: 

{
This example demostrates the usage of Margins and AlignWithMargins
properties. Note that Margins will only work when AlignWithMargins
is set to true and Align is not alNone.
}
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;

 

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!