以前のページ インデックスを手動で追跡する必要があります。たとえば、[次へ] ボタンと [前へ] ボタンの OnClick イベント ハンドラーでは、次のようにすることができます。
procedure TWizardForm.NextClick(ASender: TObject);
begin
SwitchPage(True);
end;
procedure TWizardForm.PreviousClick(ASender: TObject);
begin
SwitchPage(False);
end;
SwitchPage() は次のようになります。
procedure TWizardForm.SwitchPage(AForward: boolean);
var
LGotoPage: integer;
begin
LGotoPage := PageControl.ActivePageIndex;
if AForward and (PageControl.ActivePageIndex < PageControl.PageCount) then
inc(LGotoPage)
else if PageControl.PageIndex > 0 then
dec(LGotoPage);
if (LGotoPage <> PageControl.ActivePageIndex)
and AllowSwitchFrom(ActivePageIndex) then
begin
FPreviousPage := PageControl.ActivePageIndex;
PageControl.ActivePageIndex := LGotoPage;
end;
end;
またはその趣旨の何か。:)
編集: Argalatyrは正しく、ウィザードを順番に移動したい場合は間違っています。ここではそうです。
OnChanging ハンドラーは実際に起動し、元のページは (まだ) アクティブなページです。
私の例のようにページ インデックスを直接設定した場合、OnChanging イベントは発生しないため、古いページ インデックスを追跡する必要があります。これは、オプションのページ (シーケンシャルではない) を使用してウィザードをコーディングすることから来ています。
投稿する前にもう少しよく確認するべきでした。間違った答えをお詫びします。
N@