1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
|
program TabOrder;
{$mode objfpc}{$H+}
uses
Interfaces, Classes, SysUtils, Forms, Controls, Buttons, StdCtrls, ExtCtrls,
ComCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
PageCtrl: TPageControl;
CloseButton: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
public
constructor Create(TheOwner: TComponent); override;
procedure CloseButtonClick(Sender: TObject);
procedure WriteTabOrder;
end;
{ TForm1 }
constructor TForm1.Create(TheOwner: TComponent);
procedure CreatePage1;
begin
Label1:=TLabel.Create(Self);
with Label1 do begin
Name:='Label1';
Parent:=PageCtrl.Page[0];
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:=PageCtrl.Page[0];
SetBounds(10,40,100,Height);
end;
Edit2:=TEdit.Create(Self);
with Edit2 do begin
Name:='Edit2';
Parent:=PageCtrl.Page[0];
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;
var
i: integer;
begin
inherited CreateNew(TheOwner, 1);
Name:='Form1';
Position:=poScreenCenter;
SetInitialBounds(0,0,400,300);
PageCtrl:=TPageControl.Create(Self);
with PageCtrl do begin
Name:='PageCtrl';
Parent:=Self;
Align:=alTop;
Height:=Parent.ClientHeight-40;
for i:=1 to 3 do
with TTabSheet.Create(PageCtrl) do
begin
PageControl:=PageCtrl;
Name:='Page'+IntToStr(i);
Caption:=Name;
end;
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);
OnClick:=@CloseButtonClick;
end;
CreatePage1;
CreatePage2;
CreatePage3;
// define TabOrder
CloseButton.TabStop:=true;
CloseButton.TabOrder:=0;
PageCtrl.TabStop:=true;
PageCtrl.TabOrder:=1;
PageCtrl.Page[0].TabStop:=true;
PageCtrl.Page[0].TabOrder:=2;
PageCtrl.Page[1].TabStop:=true;
PageCtrl.Page[1].TabOrder:=3;
PageCtrl.Page[2].TabStop:=true;
PageCtrl.Page[2].TabOrder:=4;
WriteTabOrder;
end;
procedure TForm1.CloseButtonClick(Sender: TObject);
begin
Close;
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.
|