mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-12 21:49:30 +02:00
327 lines
8.4 KiB
ObjectPascal
327 lines
8.4 KiB
ObjectPascal
{
|
|
***************************************************************************
|
|
* *
|
|
* This source is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the 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, but *
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
|
* General Public License for more details. *
|
|
* *
|
|
* A copy of the GNU General Public License is available on the World *
|
|
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
|
|
* obtain it by writing to the Free Software Foundation, *
|
|
* Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA. *
|
|
* *
|
|
***************************************************************************
|
|
}
|
|
unit notebku;
|
|
|
|
{$mode objfpc}
|
|
{$H+}
|
|
|
|
interface
|
|
|
|
uses Classes, SysUtils, Controls, Forms, ExtCtrls, Buttons, StdCtrls, ComCtrls;
|
|
|
|
type
|
|
TForm1 = class(TForm)
|
|
procedure fNotebkResize(Sender: TObject);
|
|
private
|
|
public
|
|
fNotebk: TNotebook;
|
|
fNotebook: TPageControl;
|
|
fButton1: TButton;
|
|
fButton2: TButton;
|
|
fButton3: TButton;
|
|
fButton4: TButton;
|
|
fButton5: TButton;
|
|
fButton6: TButton;
|
|
FRadButton: TRadioButton;
|
|
FCheckBox: TCheckBox;
|
|
FComboBox: TComboBox;
|
|
FLabel: TLabel;
|
|
FGroupbox1, FGroupbox2: TGroupBox;
|
|
constructor Create(AOwner: TComponent); override;
|
|
procedure Button1Click(Sender: TObject);
|
|
procedure Button2Click(Sender: TObject);
|
|
procedure Button3Click(Sender: TObject);
|
|
procedure Button4Click(Sender: TObject);
|
|
procedure Button5Click(Sender: TObject);
|
|
procedure Button6Click(Sender: TObject);
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
procedure TForm1.fNotebkResize(Sender: TObject);
|
|
begin
|
|
with fNotebook do
|
|
SetBounds(20,50,Parent.Width-50,Parent.Height-110);
|
|
end;
|
|
|
|
constructor TForm1.Create(AOwner: TComponent);
|
|
var
|
|
i: integer;
|
|
begin
|
|
inherited CreateNew(AOwner, 1);
|
|
Caption := 'Notebook/PageControl Test';
|
|
Width := 300;
|
|
Height := 400;
|
|
Left := 200;
|
|
Top := 200;
|
|
|
|
// Create the Notebook
|
|
fNotebk := TNotebook.Create(Self);
|
|
with fNotebk do
|
|
begin
|
|
Parent := Self;
|
|
Align := alClient;
|
|
Left := 0;
|
|
Top :=0;
|
|
Width := Self.Width;
|
|
Height := Self.Height;
|
|
for i:=1 to 5 do
|
|
Pages.Add('Page '+IntToStr(i));
|
|
end;
|
|
|
|
fNotebk.Page[4].OnResize:=@fNotebkResize;
|
|
|
|
// Create the nested PageControl
|
|
fNotebook := TPageControl.Create(Self);
|
|
with fNotebook do
|
|
begin
|
|
Parent := fNotebk.Page[4];
|
|
for i:=1 to 5 do
|
|
with TTabSheet.Create(fNotebook) do
|
|
begin
|
|
PageControl := fNotebook;
|
|
Caption := 'Page '+IntToStr(i);
|
|
end;
|
|
end;
|
|
|
|
{ Create Goto First Page Button on last page of Notebook
|
|
Delphi Way
|
|
This way uses the Pages.Objects property which returns a generic object that
|
|
must be case to a TPage. This is the way Delphi works. }
|
|
fButton1 := TButton.Create(Self);
|
|
with fButton1 do
|
|
begin
|
|
Parent := fNotebk.Page[4];
|
|
OnClick := @Button1Click;
|
|
Width := 150;
|
|
Height := 23;
|
|
left := (fNotebk.Width - Width) div 2;
|
|
top := 20;
|
|
Caption := 'Goto First Page';
|
|
Show;
|
|
end;
|
|
|
|
{ Create Goto Last Page Button on first page of Notebook
|
|
Custom Way
|
|
This way uses the Page property which returns a TPage object. The Pages.Objects
|
|
property returns a generic object that must be case to a TPage. This property is
|
|
specific to Lazarus }
|
|
fButton2 := TButton.Create(Self);
|
|
with fButton2 do
|
|
begin
|
|
Parent := fNotebk.Page[0];
|
|
OnClick := @Button2Click;
|
|
Width := 150;
|
|
Height := 23;
|
|
left := (fNotebk.Width - Width) div 2;
|
|
top := 20;
|
|
Caption := 'Goto Last Page';
|
|
Show;
|
|
end;
|
|
|
|
fGroupBox1 := TGroupBox.Create(Self);
|
|
with fGroupBox1 do
|
|
begin
|
|
Parent := fNotebk.Page[0];
|
|
Width := 250;
|
|
Height := 250;
|
|
left := (fNotebk.Width - Width) div 2;
|
|
top := 50;
|
|
Caption := 'Groupbox 1';
|
|
Show;
|
|
end;
|
|
|
|
fGroupBox2 := TGroupBox.Create(Self);
|
|
with fGroupBox2 do
|
|
begin
|
|
Parent := fGroupBox1;
|
|
Width := 220;
|
|
Height := 210;
|
|
left := 10;
|
|
top := 10;
|
|
Caption := 'Groupbox 2';
|
|
Show;
|
|
end;
|
|
|
|
fRadButton := TRadioButton.Create(Self);
|
|
with fRadButton do
|
|
begin
|
|
Parent := fGroupBox2;
|
|
Width := 150;
|
|
Height := 23;
|
|
left := 10;
|
|
top := 10;
|
|
Caption := 'Radiobutton 1';
|
|
Show;
|
|
end;
|
|
|
|
fCheckBox := TCheckBox.Create(Self);
|
|
with fCheckBox do
|
|
begin
|
|
Parent := fGroupBox2;
|
|
Width := 150;
|
|
Height := 23;
|
|
left := 10;
|
|
top := 40;
|
|
Caption := 'Checkbox 1';
|
|
Show;
|
|
end;
|
|
|
|
fComboBox := TComboBox.Create(Self);
|
|
with fComboBox do
|
|
begin
|
|
Parent := fGroupBox2;
|
|
Width := 150;
|
|
Height := 23;
|
|
left := 10;
|
|
top := 70;
|
|
Caption := 'Combobox 1';
|
|
Show;
|
|
end;
|
|
|
|
fLabel := TLabel.Create(Self);
|
|
with fLabel do
|
|
begin
|
|
Parent := fGroupbox2;
|
|
OnClick := @Button2Click;
|
|
Width := 150;
|
|
Height := 23;
|
|
left := 10;
|
|
top := 100;
|
|
Caption := 'Label 1';
|
|
Show;
|
|
end;
|
|
|
|
// Create Close Button on the form
|
|
fButton3 := TButton.Create(Self);
|
|
with fButton3 do
|
|
begin
|
|
Parent := Self;
|
|
OnClick := @Button3Click;
|
|
Width := 70;
|
|
Height := 23;
|
|
left := (Parent.Width - Width - 20);
|
|
top := (Parent.Height - 40);
|
|
Caption := 'Close';
|
|
Show;
|
|
end;
|
|
|
|
// Create Show/Hide Tabs Button on first page of TabbedNotebook
|
|
fButton4 := TButton.Create(fNotebook.Page[0]);
|
|
with fButton4 do
|
|
begin
|
|
Parent := fNotebook.Page[0];
|
|
OnClick := @Button4Click;
|
|
Width := 90;
|
|
Height := 23;
|
|
left := (250 {Parent.Width} - Width) div 2;
|
|
top := 150;
|
|
Caption := 'Hide Tabs';
|
|
Show;
|
|
end;
|
|
|
|
// Create Delete Page Button on third page of TabbedNotebook
|
|
fButton5 := TButton.Create(fNotebook.Page[2]);
|
|
with fButton5 do
|
|
begin
|
|
Parent := fNotebook.Page[2];
|
|
OnClick := @Button5Click;
|
|
Width := 120;
|
|
Height := 23;
|
|
left := (250 {Parent.Width} - Width) div 2;
|
|
top := 100;
|
|
Caption := 'Delete Page';
|
|
Show;
|
|
end;
|
|
|
|
// Create Set Tabs Position Button on first page of TabbedNotebook
|
|
fButton6 := TButton.Create(fNotebook.Page[0]);
|
|
with fButton6 do
|
|
begin
|
|
Parent := fNotebook.Page[0];
|
|
OnClick := @Button6Click;
|
|
Width := 150;
|
|
Height := 23;
|
|
left := (250 {Parent.Width} - Width) div 2;
|
|
top := 190;
|
|
Caption := 'Set Tab Position';
|
|
Show;
|
|
end;
|
|
|
|
// Goto the first page of the Notebook
|
|
fNotebk.PageIndex := 0;
|
|
end;
|
|
|
|
procedure TForm1.Button1Click(Sender: TObject);
|
|
begin
|
|
fNotebk.PageIndex := 0;
|
|
end;
|
|
|
|
procedure TForm1.Button2Click(Sender: TObject);
|
|
begin
|
|
fNotebk.PageIndex := fNotebk.Pages.Count - 1;
|
|
end;
|
|
|
|
procedure TForm1.Button3Click(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
procedure TForm1.Button4Click(Sender: TObject);
|
|
begin
|
|
fNotebook.ShowTabs := not fNotebook.ShowTabs;
|
|
if (fNotebook.ShowTabs) then
|
|
fButton4.Caption := 'Hide Tabs'
|
|
else
|
|
fButton4.Caption := 'Show Tabs';
|
|
end;
|
|
|
|
procedure TForm1.Button5Click(Sender: TObject);
|
|
begin
|
|
if (fNotebook.PageCount > 1) then
|
|
begin
|
|
// Make sure we don't delete the page with the delete button on it
|
|
if (fNotebook.PageIndex = fNotebook.PageCount - 1) then
|
|
fNotebook.Pages[fNotebook.PageCount - 2].Free
|
|
else
|
|
fNotebook.Pages[fNotebook.PageCount - 1].Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TForm1.Button6Click(Sender: TObject);
|
|
begin
|
|
if fNotebook.TabPosition = tpTop then
|
|
fNotebook.TabPosition := tpRight
|
|
else if fNotebook.TabPosition = tpRight then
|
|
fNotebook.TabPosition := tpBottom
|
|
else if fNotebook.TabPosition = tpBottom then
|
|
fNotebook.TabPosition := tpLeft
|
|
else if fNotebook.TabPosition = tpLeft then
|
|
fNotebook.TabPosition := tpTop;
|
|
end;
|
|
|
|
end.
|
|
|
|
|