お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
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