mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-26 18:43:50 +02:00
156 lines
3.0 KiB
ObjectPascal
156 lines
3.0 KiB
ObjectPascal
program TabOrder;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
uses
|
|
Interfaces, Classes, SysUtils, Forms, Controls, Buttons, StdCtrls, ExtCtrls;
|
|
|
|
type
|
|
|
|
{ TForm1 }
|
|
|
|
TForm1 = class(TForm)
|
|
NoteBook: TNotebook;
|
|
Page1: TPage;
|
|
Page2: TPage;
|
|
Page3: TPage;
|
|
CloseButton: TButton;
|
|
Edit1: TEdit;
|
|
Edit2: TEdit;
|
|
Label1: TLabel;
|
|
public
|
|
constructor Create(TheOwner: TComponent); override;
|
|
procedure WriteTabOrder;
|
|
end;
|
|
|
|
{ TForm1 }
|
|
|
|
constructor TForm1.Create(TheOwner: TComponent);
|
|
|
|
procedure CreatePage1;
|
|
begin
|
|
Label1:=TLabel.Create(Self);
|
|
with Label1 do begin
|
|
Name:='Label1';
|
|
Parent:=Page1;
|
|
SetBounds(10,10,250,Height);
|
|
Caption:='TabOrder: First Edit below, then Edit above';
|
|
end;
|
|
|
|
Edit1:=TEdit.Create(Self);
|
|
with Edit1 do begin
|
|
Name:='Edit1';
|
|
Parent:=Page1;
|
|
SetBounds(10,40,100,Height);
|
|
end;
|
|
|
|
Edit2:=TEdit.Create(Self);
|
|
with Edit2 do begin
|
|
Name:='Edit2';
|
|
Parent:=Page1;
|
|
SetBounds(10,70,100,Height);
|
|
end;
|
|
|
|
// define Taborder
|
|
Edit2.TabStop:=true;
|
|
Edit2.TabOrder:=0;
|
|
Edit1.TabStop:=true;
|
|
Edit1.TabOrder:=1;
|
|
end;
|
|
|
|
procedure CreatePage2;
|
|
begin
|
|
end;
|
|
|
|
procedure CreatePage3;
|
|
begin
|
|
end;
|
|
|
|
begin
|
|
inherited Create(TheOwner);
|
|
Name:='Form1';
|
|
Position:=poScreenCenter;
|
|
SetInitialBounds(0,0,400,300);
|
|
|
|
NoteBook:=TNotebook.Create(Self);
|
|
with NoteBook do begin
|
|
Name:='NoteBook';
|
|
Parent:=Self;
|
|
Align:=alTop;
|
|
Height:=Parent.ClientHeight-40;
|
|
|
|
Pages.Add('Page1');
|
|
Page1:=Page[0];
|
|
Page1.Name:='Page1';
|
|
|
|
Pages.Add('Page2');
|
|
Page2:=Page[1];
|
|
Page2.Name:='Page2';
|
|
|
|
Pages.Add('Page3');
|
|
Page3:=Page[2];
|
|
Page3.Name:='Page3';
|
|
|
|
Anchors:=[akLeft,akTop,akRight,akBottom];
|
|
PageIndex:=0;
|
|
end;
|
|
|
|
CloseButton:=TButton.Create(Self);
|
|
with CloseButton do begin
|
|
Name:='CloseButton';
|
|
Parent:=Self;
|
|
Caption:='Close';
|
|
Anchors:=[akRight,akBottom];
|
|
SetBounds(Parent.ClientWidth-110,Parent.ClientHeight-35,100,Height);
|
|
ModalResult:=mrCancel;
|
|
end;
|
|
|
|
CreatePage1;
|
|
CreatePage2;
|
|
CreatePage3;
|
|
|
|
// define TabOrder
|
|
CloseButton.TabStop:=true;
|
|
CloseButton.TabOrder:=0;
|
|
NoteBook.TabStop:=true;
|
|
NoteBook.TabOrder:=1;
|
|
Page1.TabStop:=true;
|
|
Page1.TabOrder:=2;
|
|
Page2.TabStop:=true;
|
|
Page2.TabOrder:=3;
|
|
Page3.TabStop:=true;
|
|
Page3.TabOrder:=4;
|
|
|
|
WriteTabOrder;
|
|
end;
|
|
|
|
procedure TForm1.WriteTabOrder;
|
|
|
|
procedure WriteTabOrderTree(const Prefix: string; AControl: TControl);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
write(Prefix,AControl.Name);
|
|
if AControl is TWinControl then
|
|
write(' TabOrder=',TWinControl(AControl).TabOrder,
|
|
' TabStop=',TWinControl(AControl).TabStop);
|
|
writeln('');
|
|
if AControl is TWinControl then
|
|
for i:=0 to TWinControl(AControl).ControlCount-1 do begin
|
|
WriteTabOrderTree(Prefix+' ',TWinControl(AControl).Controls[i]);
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
WriteTabOrderTree('',Self);
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
begin
|
|
Application.Initialize;
|
|
Application.CreateForm(TForm1,Form1);
|
|
Application.Run;
|
|
end.
|
|
|