こんな疑問にお答えします。
Revit上にダイアログでメッセージ表示できるTaskDialogクラス。
何かと使用する機会が多くありますよね。
今回はTaskDialogクラスについて、どんなことができるのかあれこれ検証してみました♪
TaskDialogとは
名前の通り、Revit上でダイアログを表示させるクラスです。
C#で言うMessageBoxみたいな感じですね。
基本的には下のようにコードを書くのが王道(であるはず)です。
public void Sample01()
{
TaskDialog.Show("ダイアログボックスのタイトル", "表示させたい内容");
}
これを実行すると、こんな具合にダイアログ表示されますね。
TaskDialogのボタン変更
表示されるボタンを変更するためのコードを解説します。
コピペでそのまま使えるサンプルコード
下のようにようにコーディングするとボタンが変更できます。
この場合は「OK」ボタンが出てきますよ。
public void Sample02()
{
TaskDialog.Show("ダイアログボックスのタイトル", "表示させたい内容", TaskDialogCommonButtons.Ok, TaskDialogResult.Ok);
}
サンプルコードの解説
という方に解説していきます。
TaskDialogクラスのShowメソッドにはオーバーロードがいくつかあります。
よく使うのは静的メソッドの「Show(String, String)」ですかね。
Sample02では「Show(String, String, TaskDialogCommonButtons, TaskDialogResult)」を使ってボタンをいじっています。
ちなみに、Showメソッドにはこれだけのオーバーロードがあります。
- Show()
- Show(String, String)
- Show(String, String, TaskDialogCommonButtons)
- Show(String, String, TaskDialogCommonButtons, TaskDialogResult)
TaskDialogCommonButtons
Showメソッド内の引数になっている「TaskDialogCommonButtons」はボタンの種類を示すで列挙型です。
これを使って表示されるボタンを決定します。
「TaskDialogCommonButtons」のメンバーと表示されるボタンの対応は下表のとおりです。
| None | 閉じる(C) |
|---|---|
| Ok | OK |
| Yes | はい(Y) |
| No | いいえ(N) |
| Cancel | キャンセル |
| Retry | 再試行(R) |
| Close | 閉じる(C) |
TaskDialogResult
TaskDialogResultは、ボタンを選択した時の挙動を決める列挙型です。
メンバーは下表とおり。
- None
- Ok
- Cancel
- Retry
- Yes
- No
- Close
- CommandLink1
- CommandLink2
- CommandLink3
- CommandLink4
これにより、TaskDialogCommonButtonsでボタンの変更、TaskDialogResultで変更したボタンに効果をできるっぽいのですが、、
- TaskDialogCommonButtonsに対応したTaskDialogResultを選択しないとマクロが失敗する
- 対応させたところで、ダイアログは閉じるだけ
と、イマイチどんな使い方になるのかが僕のPC環境では謎な感じですw
TaskDialogをもりもりカスタマイズ
最初にTaskDialogのインスタンスを生成しておいて、プロパティを設定することもできます。
そして、最後にShow()メソッドでダイアログ表示すると色々とカスタマイズされていますよ。
コピペでそのまま使えるサンプルコード
コーディングとしてはこんな感じです。
public void Sample03()
{
TaskDialog taskDialog = new TaskDialog("カスタマイズしてみた");
taskDialog.TitleAutoPrefix = false;
taskDialog.MainIcon = TaskDialogIcon.TaskDialogIconShield;
taskDialog.MainInstruction = "メインメッセージ";
taskDialog.MainContent = "メインメッセージの下にちっちゃいテキストで表示されます";
taskDialog.ExtraCheckBoxText = "チェックボックスつけてみた";
taskDialog.ExpandedContent = "閉じているテキスト";
taskDialog.FooterText = "フッターを表示させてみた";
taskDialog.Show();
}
これを実行すると、下のようなダイアログが出てきます。
いつも見慣れているTaskDialogとは全然違いますね。
ただ、チェックボックスにどのような効果があるのか良く分かりません^^
ちなみに、TaskDialogクラスのコンストラクターはTaskDialog(String tilte)のみです。
引数でタイトルを指定する感じですね。
サンプルコードの解説|TaskDialogクラスのプロパティ
Sample3で使った、TaskDialogクラスのプロパティをまとめます。
これだけあれば色んなカスタマイズができそうですね。
| プロパティ | 型 | 内容 |
|---|---|---|
| TitleAutoPrefix | bool | タイトル横にモジュール名を表示する/しないを選択 |
| MainIcon | enum | TaskDialogIcon Enumerationよりアイコンを指定 |
| MainInstruction | string | メインメッセージのテキスト設定 |
| MainContent | string | MainInstruction下に補足メッセージを追記 |
| ExtraCheckBoxText | string | チェックボックスとそのテキストを設定 |
| ExpandedContent | string | 詳細テキストを設定(通常は閉じている) |
| FooterText | string | フッターのテキスト設定 |
TaskDialogIconは列挙型でメンバーは下の通りです。
| TaskDialogIconNone | なし |
|---|---|
| TaskDialogIconShield | |
| TaskDialogIconInformation | |
| TaskDialogIconError | |
| TaskDialogIconWarning |
※以上の3つはRevit2018以降に追加されたメンバーです。
RevitAPIのTaskDialogクラスについて|まとめ
以上、RevitAPIのTaskDialogクラスについての紹介でした。
たかがTaskDialogだと思っていましたが、調べてみたら割とカスタマイズできたので感動です。
ただよっぽどのことがない限り、こんなカスタマイズ仕様は使わないでしょうね^^
最後まで読んでいただき、ありがとうございました。
以上です。
RevitAPI独学用教材
最後に教材等を紹介します。
RevitAPIを理解してプログラムを作れるようになるには、C#の知識が必要です。
下記、オススメの参考書です。
プログラムが初心者にオススメのC#教材
プログラムの基礎知識がある人にオススメのC#教材
美しいコードを書きたい人はこちら
Revitアドイン作ります
のんびり学習してる余裕などない!という方にご案内です。
スキル、資格等の詳細はプロフィールをご覧ください。
ご質問などもお気軽にメッセージしていただければと思います。
詳しくは下の記事にまとめています。
最後まで読んでいただき、ありがとうございました^^
以上です。






