Maximizing a form.

Hi Experts,
I have a form that contains a lot of components. Some of these components contain other components.(for example a pagecontrol which contains tabsheets which contains labels containing other labels). When I maximize this form at runtime, all the components stay in one corner. How do I get the components to spread out and fill the form when it is maximized. When searching through the answers database, it said to set the align property to 'alclient'. Did it mean the form itself or of each component?
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

You can set the anchors of components.
Align to alClient will maximise the control, so that it's size is the same as its parent
You may also want to put some controls in a panel, and set the panel's Align property. Eg. set one of them to alLeft, the other to alClient, so when resized, only the one with alClient gets larger (in Width).
You may also want to drop Splitter between those panels so they can be resized manually.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
-if you want your form run in maximized changed form.windowstate = wsmaximized
-if you want your pagecontrol maximized when the form maximized form change pageconrol.align=alclient
I should correct
"Align to alClient will maximise the control, so that it's size is the same as its parent"
Align to alClient will maximise the control to fill as much space as possible, so that it's size could be as large as its parent (but no more)
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

You can play around with this. Try resizing the form and try the spliiter. Pay attention to each component's Align and Anchors

object Form1: TForm1
  Left = 192
  Top = 114
  Width = 559
  Height = 349
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Splitter1: TSplitter
    Left = 185
    Top = 0
    Height = 315
  object Panel1: TPanel
    Left = 0
    Top = 0
    Width = 185
    Height = 315
    Align = alLeft
    Caption = 'Panel1'
    TabOrder = 0
    DesignSize = (
    object Label1: TLabel
      Left = 120
      Top = 269
      Width = 32
      Height = 13
      Anchors = [akRight, akBottom]
      Caption = 'Label1'
  object Panel2: TPanel
    Left = 188
    Top = 0
    Width = 363
    Height = 315
    Align = alClient
    Caption = 'Panel2'
    TabOrder = 1
    DesignSize = (
    object Button1: TButton
      Left = 24
      Top = 24
      Width = 309
      Height = 49
      Anchors = [akLeft, akTop, akRight, akBottom]
      Caption = 'Button1'
      TabOrder = 0

unit Unit1;


  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

  TForm1 = class(TForm)
    Panel1: TPanel;
    Splitter1: TSplitter;
    Panel2: TPanel;
    Button1: TButton;
    Label1: TLabel;
    { Private declarations }
    { Public declarations }

  Form1: TForm1;


{$R *.dfm}

Hello Sir
 You could use either anchor property for each component or a vcl called GTSizer which will automatically change the size of the controls based upon the change in the size of the form or the resolution. But the best way is to use the anchor property for each component.

with regards,
QurbanDurraniAuthor Commented:
Thanks to all.
Saravananvq, Why do you say it is better to use anchor property  for each component rather than GTSizer?
You can easily do it using anchors and align, and OnResize if you need to (eg. to keep a component in the centre). Why would you download another component.
Well that's just my opinion =P
QurbanDurraniAuthor Commented:
Sure, but for an application that already exists, I would have to do this for very component on every form.
I see.
I think GTSizer can do the all resize automatically, as well as the fonts depending on user's screen resolution. It must be a handy component.
Why dont you give the trial version a try
You can compare how much easier and better it is than setting anchors manually, and decide whether to buy it or not :-)
QurbanDurraniAuthor Commented:
Thanks hardi for such a prompt comment on a sunday. I have been playing around with the trial version of GTSizer and it seems to work ok for the most part. A friend of mine suggested a 'TFormSize' component from '' which is lot cheeper but does not have a trial version available to play around with. Do you know about the capabilities of this component?
I don't know about TFormSize, but I found it here
but it doesn't mention auto-resizing components, and you can download it for free.
May be it's not the component you're looking for? =P
Btw it's monday morning here in Australia :-D
QurbanDurraniAuthor Commented:
Thanks to everyone for your help.
Hardi, So you are in Australia, I am in Canada. You know I have been working in the technical field for some time now, but it's impect on the humanity still amazes me sometimes. Just look at us, Someone in Australia helping someone in Canada pretty much realtime. Thanks again.
Glad to help :-)
Yea... unbelievable isn't it... this world is getting smaller with technologies ^^
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.