QurbanDurrani
asked on
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?
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?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
I should correct
"Align to alClient will maximise the control, so that it's size is the same as its parent"
to
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)
"Align to alClient will maximise the control, so that it's size is the same as its parent"
to
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)
You can play around with this. Try resizing the form and try the spliiter. Pay attention to each component's Align and Anchors
Unit1.dfm
========
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
end
object Panel1: TPanel
Left = 0
Top = 0
Width = 185
Height = 315
Align = alLeft
Caption = 'Panel1'
TabOrder = 0
DesignSize = (
185
315)
object Label1: TLabel
Left = 120
Top = 269
Width = 32
Height = 13
Anchors = [akRight, akBottom]
Caption = 'Label1'
end
end
object Panel2: TPanel
Left = 188
Top = 0
Width = 363
Height = 315
Align = alClient
Caption = 'Panel2'
TabOrder = 1
DesignSize = (
363
315)
object Button1: TButton
Left = 24
Top = 24
Width = 309
Height = 49
Anchors = [akLeft, akTop, akRight, akBottom]
Caption = 'Button1'
TabOrder = 0
end
end
end
========
Unit1.pas
========
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Splitter1: TSplitter;
Panel2: TPanel;
Button1: TButton;
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
Unit1.dfm
========
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
end
object Panel1: TPanel
Left = 0
Top = 0
Width = 185
Height = 315
Align = alLeft
Caption = 'Panel1'
TabOrder = 0
DesignSize = (
185
315)
object Label1: TLabel
Left = 120
Top = 269
Width = 32
Height = 13
Anchors = [akRight, akBottom]
Caption = 'Label1'
end
end
object Panel2: TPanel
Left = 188
Top = 0
Width = 363
Height = 315
Align = alClient
Caption = 'Panel2'
TabOrder = 1
DesignSize = (
363
315)
object Button1: TButton
Left = 24
Top = 24
Width = 309
Height = 49
Anchors = [akLeft, akTop, akRight, akBottom]
Caption = 'Button1'
TabOrder = 0
end
end
end
========
Unit1.pas
========
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Splitter1: TSplitter;
Panel2: TPanel;
Button1: TButton;
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks to all.
Saravananvq, Why do you say it is better to use anchor property for each component rather than GTSizer?
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
Well that's just my opinion =P
ASKER
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
http://www.genotechs.com/downloads.html
You can compare how much easier and better it is than setting anchors manually, and decide whether to buy it or not :-)
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
http://www.genotechs.com/downloads.html
You can compare how much easier and better it is than setting anchors manually, and decide whether to buy it or not :-)
ASKER
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 'tmssoftware.com' 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
http://www.tmssoftware.com/formsize.htm
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
http://www.tmssoftware.com/formsize.htm
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
ASKER
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.
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 ^^
Yea... unbelievable isn't it... this world is getting smaller with technologies ^^
-if you want your pagecontrol maximized when the form maximized form change pageconrol.align=alclient
kosturdur