Ąźęąķ ā ńåņč - Ķą óšīāåķü āāåšõ(VCL) Źąź šąįīņąņü ń ōīšģīé, źóäą äčķąģč÷åńźč ļåšåäąžņń’ ńņšąķčöū (PageControl) čē ōīšģ-õšąķčņåėåé (ń čńļīėüēīāąķčåģ ķąńėåäīāąķč’)?

Źčäąž ļšīåźņ-įīėāąķźó, ńäåėąķķóž ļåšåä ķą÷ąėīģ šąįīņū ķąä īńķīāķūģ -

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.