mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-07 01:52:54 +02:00
113 lines
3.5 KiB
ObjectPascal
113 lines
3.5 KiB
ObjectPascal
{ Copyright (C) 2005 Mattias Gaertner
|
|
|
|
This source is free software; you can redistribute it and/or modifyit under
|
|
the terms of the GNU General Public License as published bythe Free Software
|
|
Foundation; either version 2 of the License, or(at your option) any later
|
|
version.
|
|
|
|
This code is distributed in the hope that it will be useful, butWITHOUT ANY
|
|
WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR
|
|
A PARTICULAR PURPOSE. See the GNUGeneral Public License for more details.
|
|
|
|
A copy of the GNU General Public License is available on the WorldWide Web
|
|
at <http://www.gnu.org/copyleft/gpl.html>. You can alsoobtain it by writing
|
|
to the Free Software Foundation,Inc., 59 Temple Place - Suite 330, Boston,
|
|
MA 02111-1307, USA.
|
|
|
|
---------------------------------------------------------------------------
|
|
Abstract:
|
|
Demonstrates LCL TWinControl.ChildSizing.Layout property.
|
|
}
|
|
unit MainUnit;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
|
Buttons, RTTICtrls, ExtCtrls, RTTIGrids;
|
|
|
|
type
|
|
|
|
{ TChildsizingLayoutDemoForm }
|
|
|
|
TChildsizingLayoutDemoForm = class(TForm)
|
|
ChildSizingGroupBox: TGroupBox;
|
|
LayoutGroupBox: TGroupBox;
|
|
LayoutLabel: TLabel;
|
|
LayoutTIRadioGroup: TTIRadioGroup;
|
|
ButtonCountRadioGroup: TRadioGroup;
|
|
ControlsPerLineTIRadioGroup: TTIRadioGroup;
|
|
ChildSizingTIPropertyGrid: TTIPropertyGrid;
|
|
procedure ButtonCountRadioGroupClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
private
|
|
public
|
|
procedure SetButtonCount(NewCount: integer);
|
|
end;
|
|
|
|
var
|
|
ChildsizingLayoutDemoForm: TChildsizingLayoutDemoForm;
|
|
|
|
implementation
|
|
|
|
{ TChildsizingLayoutDemoForm }
|
|
|
|
procedure TChildsizingLayoutDemoForm.FormCreate(Sender: TObject);
|
|
begin
|
|
LayoutTIRadioGroup.Link.SetObjectAndProperty(LayoutGroupBox.ChildSizing,'Layout');
|
|
ControlsPerLineTIRadioGroup.Link.SetObjectAndProperty(LayoutGroupBox.ChildSizing,'ControlsPerLine');
|
|
ChildSizingTIPropertyGrid.TIObject:=LayoutGroupBox.ChildSizing;
|
|
|
|
SetButtonCount(3);
|
|
end;
|
|
|
|
procedure TChildsizingLayoutDemoForm.SetButtonCount(NewCount: integer);
|
|
var
|
|
i: Integer;
|
|
x: Integer;
|
|
begin
|
|
if NewCount=LayoutGroupBox.ControlCount then exit;
|
|
if ButtonCountRadioGroup.Items.IndexOf(IntToStr(NewCount))<0 then
|
|
NewCount:=StrToIntDef(ButtonCountRadioGroup.Items[2],3);
|
|
|
|
LayoutGroupBox.DisableAlign;
|
|
// create buttons
|
|
for i:=0 to NewCount-1 do begin
|
|
if LayoutGroupBox.ControlCount=i then begin
|
|
with TButton.Create(Self) do begin
|
|
if LayoutGroupBox.ChildSizing.Layout=cclNone then begin
|
|
x:=i*20;
|
|
SetBounds(x,x,Width,Height);
|
|
end;
|
|
Name:='Button'+IntToStr(i);
|
|
Parent:=LayoutGroupBox;
|
|
end;
|
|
end;
|
|
// set a caption of various length
|
|
LayoutGroupBox.Controls[i].Caption:=
|
|
copy(LayoutGroupBox.Controls[i].Name,1,(i mod 5)+3);
|
|
end;
|
|
// free unneeded buttons
|
|
while LayoutGroupBox.ControlCount>NewCount do
|
|
LayoutGroupBox.Controls[LayoutGroupBox.ControlCount-1].Free;
|
|
LayoutGroupBox.EnableAlign;
|
|
|
|
// make sure ButtonCountRadioGroup shows the correct count
|
|
ButtonCountRadioGroup.ItemIndex:=
|
|
ButtonCountRadioGroup.Items.IndexOf(IntToStr(NewCount));
|
|
end;
|
|
|
|
procedure TChildsizingLayoutDemoForm.ButtonCountRadioGroupClick(Sender: TObject);
|
|
begin
|
|
SetButtonCount(StrToIntDef(
|
|
ButtonCountRadioGroup.Items[ButtonCountRadioGroup.ItemIndex],3));
|
|
end;
|
|
|
|
initialization
|
|
{$I mainunit.lrs}
|
|
|
|
end.
|
|
|