同じ処理を何回も実行する繰り返しの構文の一つ「繰り返し(前判定)」アクティビティについてです。
1.アクティビティのプログラム名
System.Activities.Statements.While
2.説明
Studio バージョン ~2.0.2.0
クイックアクセス: 「ツールボックス」 > 「コントロールフロー」 > 「繰り返し(前判定)」
Studio バージョン 2.0.3.0~
クイックアクセス: 「ツールボックス」 > 「システム」 > 「コントロールフロー」 > 「繰り返し(前判定)」
条件が満たされている間、指定した処理を繰り返すアクティビティです。繰り返すよう指定した処理の実行よりも前に判定を行うため、条件を満たさない場合、指定した処理1回も実行されません。
※動作を確認したコボットStudioのバージョン:2.0.1.6
※バージョンによって文言などが一部異なる場合がございます
3.プロパティ
プロパティ項目 | プロパティ名 | 入力欄 | 説明 |
---|---|---|---|
その他 | パブリック | チェック項目 | ログにアクティビティ内の変数と引数がログファイルに書き込まれ、Centerにプッシュされる。(詳細は「プロパティ項目「パブリック」について」を参照) |
条件 | 条件を入力(Boolean型) | 条件がTrueの間繰り返し処理が実行される。 | |
表示名 | 値を入力(String型) | デザイナーパネルのアクティビティ名に反映される。 |
4.使い方
「繰り返し(前判定)」アクティビティを使用し、指定された回数分繰り返しメッセージボックスを表示するロボットを作成してみましょう。
まず、回数を指定するための入力ダイアログを配置します。アクティビティ「コア > 入力ダイアログ」をツールボックスからデザイナーパネルにドラッグ&ドロップで配置します。
プロパティパネルの「出力 > 結果」に、ダイアログから入力された値を格納する変数名を指定します。変数が作成されていない場合、「変数の作成」を行い指定します。変数の型は「Object」です。「プロパティから作成する」で結果の変数を作成した場合、変数の型はObject型で作成されます。例では変数名を「in_num」としています。
プロパティパネルの入力についての設定です。この項目は必須でないため、指定しなくても動作します。
①オプション… 配列で指定した場合、3要素まではチェックボックス・4要素以上はセレクトボックスになります。指定なしは入力ボックスとなります。
②タイトル … ダイアログウィンドウのタイトルに表示されます。
③ラベル … ダイアログ内に表示されます。
今回の例では、以下のように指定しています。
①オプション… {"0","3","7"}
②タイトル … "繰り返し(前判定)のサンプル"
③ラベル … "メッセージボックスを表示したい回数をチェックしてください。"
次に、繰り返した回数をカウントする変数を用意します。初期値として「0」を代入します。アクティビティ「オリジナル > 代入」をツールボックスからデザイナーパネルにドラッグ&ドロップで配置します。
アクティビティ内の左辺「代入先」に「繰り返した回数」を格納する変数名を指定します。(プロパティパネルの「その他 > 代入先」からも設定できます。)変数が作成されていない場合、「変数の作成」を行い指定します。変数の型は「Int32」です。
アクティビティ内の右辺「値」に「0」と入力します。(プロパティパネルの「その他 > 値」からも設定できます。)
処理の開始を案内するメッセージボックスを配置します。アクティビティ「コア > メッセージボックス」をツールボックスからデザイナーパネルにドラッグ&ドロップで配置します。
アクティビティ内「テキスト」に、実行開始を案内するメッセージ「"これから" + in_num.ToString + "回【繰り返し処理中】と表示したメッセージボックスを表示します。"」を指定します。(プロパティパネルの「入力 > テキスト」からも可能です。)
アクティビティ「コントロールフロー > 繰り返し(前r判定)」を、ツールボックスからデザイナーパネルにドラッグ&ドロップで配置します。
「Condition」に繰り返すための条件を指定します。指定した条件がTrueになる場合、Body内に記述した処理を繰り返し実行します。今回の例では「繰り返した回数が指定された回数のより小さい場合」となります。「Body」には繰り返し実行したい処理を記述します。今回の例では「メッセージボックスの表示」処理になります。「Condition」が「Body」より前に配置されているため、条件を満たさない場合「メッセージボックスを表示する」処理は行われません。
「Body」内の処理を繰り返す条件を指定します。今回の例では、指定した回数Body内の処理を繰り返したいため「繰り返した回数が指定された回数より小さい」を条件に指定します。「Condition」に「i < CType(in_num,System.Int32)」を指定します。「CType」はObject型を別のデータタイプに変換する関数です。(「データ型の変換」を参照)
「Body」内に繰り返す処理を配置していきます。アクティビティ「コントロールフロー > シーケンス」をツールボックスからデザイナーパネルの「ボディー」内にドラッグ&ドロップで配置します。
メッセージボックスの表示です。アクティビティ「コア > メッセージボックス」をツールボックスからデザイナーパネルにドラッグ&ドロップで配置し、アクティビティ内「テキスト」に「"【繰り返し処理中】(" + (i+1).ToString + "回目)"」を指定します。(プロパティパネルの「入力 > テキスト」からも可能です。)
メッセージボックスを表示後、実行回数をカウントアップします。アクティビティ「オリジナル > 代入」をツールボックスからデザイナーパネルにドラッグ&ドロップで配置し、アクティビティ内左辺「代入先」にカウント用の変数「i」を、右辺「値」に「i+1」と入力します。(プロパティパネルからも可能です。)
繰り返し(前判定)アクティビティの設定ができました。繰り返し処理を抜けた後、終了するメッセージを表示しましょう。アクティビティ「コア > メッセージボックス」をツールボックスからデザイナーパネルにドラッグ&ドロップで配置し、アクティビティ内「テキスト」に「in_num.ToString + "回メッセージボックスを表示しました。" + vbNewLine + "これで終了します。"」を指定します。(プロパティパネルの「入力 > テキスト」からも可能です。)
「ホーム > スタート」をクリック、または、「F5キー」押下で実行します。
実行結果です。入力ダイアログでチェックした回数だけメッセージボックスが表示されます。「3」をチェックした場合と「0」をチェックした場合のキャプチャです。
入力ダイアログで「3」を選択した場合
●開始メッセージ
●Body内の「指定回数分メッセージボックスを表示」の部分
●終了メッセージ
入力ダイアログで「0」を選択した場合
●開始メッセージ
●Body内の「指定回数分メッセージボックスを表示」の部分
※メッセージボックスは表示されない
●終了メッセージ