Źčäąž ļšīåźņ-įīėāąķźó, ńäåėąķķóž ļåšåä ķą÷ąėīģ šąįīņū ķąä īńķīāķūģ -
unit Unit1; //įąēīāą’ ōīšģą
õšąķčņåė’ ńņšąķčöū
interface
uses ...
type
TBPgFrm = class(TForm)
Panel1: TPanel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Label1: TLabel;
public
function PgInit: boolean; virtual;
function PgValid: boolean; virtual;
end;
implementation
{$R *.DFM}
function TBPgFrm.PgInit: boolean;
begin
result:= MessageDlg(Label1.Caption+': PgInit',
mtConfirmation, mbOkCancel, 0)=mrOK;
end;
function TBPgFrm.PgValid: boolean;
begin
result:= MessageDlg(Label1.Caption+': PgValid',
mtConfirmation, mbOkCancel, 0)=mrOK;
end;
end.
unit Unit2; //ćėąāķą’ ōīšģą
ļšīåźņą; ńīäåšęčņ ļåšāóž ńņšąķčöó
interface //č źķīļźč Cancel, Prev &
Next/Finish.
uses ...
type
TPagesDlg = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Prev: TButton;
CancelBtn: TButton;
Next: TButton;
Label1: TLabel;
procedure CancelBtnClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure NextClick(Sender: TObject);
procedure PrevClick(Sender: TObject);
private
Frms: TList;
procedure AddForms;
end;
var PagesDlg: TPagesDlg;
implementation
uses Unit1, Unit3, Unit4, Unit5;
{$R *.DFM}
procedure TPagesDlg.AddForms; //šąēģåłåķčå
äčķąģč÷åńźčõ ńņšąķčö
var i: word;
begin
Frms:= TList.Create;
Frms.Add(TBPgFrm1.Create(Self));
Frms.Add(TBPgFrm2.Create(Self));
for i:= 0 to 1 do TBPgFrm(Frms[i]).TabSheet1.PageControl :=
PageControl1
end;
procedure TPagesDlg.CancelBtnClick(Sender: TObject);
begin Close; end;
procedure TPagesDlg.FormDestroy(Sender: TObject);
var i: word;
begin
for i:= Frms.Count-1 downto 0 do TBPgFrm(Frms[i]).Free;
Frms.Free;
end;
procedure TPagesDlg.NextClick(Sender: TObject);
var
i: word;
vi: Boolean;
begin
Next.Enabled:= false;
if PageControl1.PageCount=1 then AddForms;
i:= PageControl1.ActivePage.PageIndex;
if i=0 then vi:= true else vi:= TBPgFrm(Frms[i-1]).PgValid;
if vi then
with PageControl1 do
if i=PageCount-1 then
begin
CancelBtnClick(Sender); exit;
end
else
begin
ActivePage:= FindNextPage(ActivePage, True, false);
if ActivePage.PageIndex=PageCount-1 then
Next.Caption:= 'Finish';
Prev.Enabled:= true;
if TBPgFrm(Frms[i]).PgInit then Next.Enabled:= true
else PrevClick(Sender);
end
else
Next.Enabled:= true;
end;
procedure TPagesDlg.PrevClick(Sender: TObject);
begin
Prev.Enabled:= false;
with PageControl1 do
begin
ActivePage:= FindNextPage(ActivePage, false, false);
Prev.Enabled:= ActivePage.PageIndex>0;
end;
Next.Caption:= 'Next'; Next.Enabled:= true;
end;
end.
unit Unit3; //ķąńėåäķčź ń RadioGroup.
interface
uses ...
type
TBPgFrm3 = class(TBPgFrm)
RadioValid: TRadioGroup;
public
function PgValid: boolean; override;
end;
implementation
{$R *.DFM}
function TBPgFrm3.PgValid: boolean;
begin
result:= RadioValid.ItemIndex=0;
end;
end.
unit Unit4; // ķąńėåäķčź ń CheckBox.
interface
uses ...
type
TBPgFrm2 = class(TBPgFrm)
CheckValid: TCheckBox;
public
function PgValid: boolean; override;
end;
implementation
{$R *.DFM}
function TBPgFrm2.PgValid: boolean;
begin
result:= CheckValid.Checked;
end;
end.
Ģčõąčė Ąė’āäčķ (Michail Alyavdin)
(2:5030/198.8)
Ā Delphi 4 ļī’āčėčńü ķīāūå āīēģīęķīńņč, ā ÷ąńņķīńņč, āīēģīęķīńņü äīźčķćą āčēóąėüķūõ źīģļīķåķņ, ā ÷ąńņķīńņč, ōīšģ, ķą šąēėč÷ķūå DockSite, ā ņīģ ÷čńėå č ķą TPageControl. Żņī įīėåå óäīįķī.
Źšīģå ņīćī, Āū čģååņå āīēģīęķīńņü čńļīėüēīāąķč’ TFormLoader čē įčįėčīņåźč VG Library.