|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"ウィザードフォーム"
タイトル:ウィザードをつくる
マイクロソフトの大規模なアプリケーションなどによくついてくる
○○ウィザードを実現する例です。
nifty:FDELPHI/MES/08/9729からのツリーを参考に、PageControlを
利用して実現しています。
実際に使うときには、このTFormWizardを継承したフォームを作って、
(wizardユニットをプロジェクトに加えたあと、
「ファイル-新規作成-project1-FormWizard」で作ります)
ウィザード一画面ごとに新しいページを追加していってください。
画面遷移やボタン名の変更はTFormWizardが面倒を見てくれます。
FormWizard1.showModal でウィザードが開始されます。
↑継承したフォーム
================================
unit wizard;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TFormWizard = class(TForm)
PageControl1: TPageControl;
btnNext: TButton;
btnPrev: TButton;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
procedure btnNextClick(Sender: TObject);
procedure btnPrevClick(Sender: TObject);
procedure TabSheet1Show(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
//var
// FormWizard: TFormWizard;
implementation
{$R *.DFM}
procedure TFormWizard.btnNextClick(Sender: TObject);
begin
//今表示されているのが最後のページならウィザードを終了
//そうでなければ次のページへ進む
with PageControl1 do
begin
if ActivePage.PageIndex = PageCount-1 then
begin
modalResult := mrOK;
exit;
end;
ActivePage := FindNextPage(ActivePage,true,false);
if ActivePage.PageIndex = PageCount-1 then
begin
btnNext.Caption := '完了';
end;
if ActivePage.PageIndex = 1 then
begin
btnPrev.Caption := '<< 戻る';
end;
end;
end;
procedure TFormWizard.btnPrevClick(Sender: TObject);
begin
//今表示されているのが最初のページならウィザードをキャンセル
//そうでなければ前のページへ戻る
with PageControl1 do
begin
if ActivePage.PageIndex = 0 then
begin
modalResult := mrCancel;
exit;
end;
ActivePage := FindNextPage(ActivePage,false,false);
if ActivePage.PageIndex = PageCount-2 then
begin
btnNext.Caption := '次へ >>';
end;
if ActivePage.PageIndex = 0 then
begin
btnPrev.Caption := '終了';
end;
end;
end;
procedure TFormWizard.TabSheet1Show(Sender: TObject);
begin
btnPrev.caption := '終了';
end;
procedure TFormWizard.FormShow(Sender: TObject);
var
i:integer;
begin
with PageControl1 do
begin
for i:= 0 to PageCount-1 do
Pages[i].TabVisible := false;
ActivePage := Pages[0];
end;
end;
end.
daisuke.furukawa@nifty.ne.jp Dia
Original document by Dia 氏 ID:(CQK00014)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|