Search Results for

    Show / Hide Table of Contents

    ダイアログ フォームの管理

    前の例では、"お子様はいらっしゃいますか?" にチェック マークが入っているかどうかに関係なく、2 つ目のダイアログが表示されます。このフラグがチェックされていない場合は 2 つ目のダイアログを表示しないようにする方法を見てみましょう。最初のダイアログの[OK]ボタンに対して OnClick ハンドラーを作成します(ハンドラーを作成するには、ボタンをダブルクリックします)。

    Pascal スクリプト:

    procedure Button1OnClick(Sender: TfrxComponent);
    begin
      DialogPage2.Visible := CheckBox1.Checked;
    end;
    

    C++ スクリプト:

    void Button1OnClick(TfrxComponent Sender)
    {
      DialogPage2.Visible = CheckBox1.Checked;
    }
    

    このコードにより、フラグがチェックされていない場合は、2 つ目のダイアログ(DialogPage2)が非表示になります。レポートをプレビューして、これが正しく動作することを確認します。

    フォームを管理する別の方法は、OnRunDialogs レポート イベントを使用する方法です。このイベント ハンドラーを作成するために、レポート ツリーまたはオブジェクト インスペクターで Report オブジェクトを選択し、オブジェクト インスペクターで[イベント]タブに切り替えます。OnRunDialogs イベントをダブルクリックして、ハンドラーを作成します。

    このハンドラーで以下のコードを記述します。

    Pascal スクリプト:

    procedure frxReport1OnRunDialogs(var Result: Boolean);
    begin
      Result := DialogPage1.ShowModal = mrOk;
      if Result then
      begin
        if CheckBox1.Checked then
          Result := DialogPage2.ShowModal = mrOk;
      end;
    end;
    

    C++ スクリプト:

    void frxReport1OnRunDialogs(bool &Result);
    {
      Result = DialogPage1.ShowModal == mrOk;
      if (Result)
      {
        if (CheckBox1.Checked)
          Result = DialogPage2.ShowModal == mrOk;
      }
    }
    

    ハンドラーは次のように動作します。

    • 最初のダイアログが表示されます。
    • それが[OK]ボタンによって閉じられた場合は、CheckBox1 の状態を調べます。
    • この状態が Checked である場合は、2 つ目のダイアログを表示します。
    • 2 つ目のダイアログが[OK]ボタンによって閉じられた場合は、Result を True に設定します。
    • ハンドラーが Result = True を返した場合は、プレビューが構築されます。Result = False を返した場合は、レポートはプレビューを構築しないで実行を停止します。
    Back to top © Copyright Fast Reports Inc.