皆さまこんにちは。
yu3xx(ゆーさんちょめちょめ)です。
前回のおさらい
前回は「二次元画像からピクセル値を直接拾って解析する方法」を紹介しました。
今回は「情報入力ダイアログを自分で作ってみよう!」です。
もくじ
情報入力ダイアログで出来ること
情報入力ダイアログを表示すると、解析や処理に必要な情報を一括で入力することが出来ます。
以前「ifで条件分岐」の回で「a = getNumber(Label,Default)」のカタチでの「数値入力ダイアログ」の紹介もしました。この数値入力ダイアログは簡便なので使いやすいのですが、1つのダイアログに1つの情報しか入力することが出来ません。
ですので、複数の情報を入力したいときは今回お話しする「情報入力ダイアログ」を使うと便利です。
作り方
ダイアログ関係のコードは少しクセがあります。
ダイアログ呼び出しから情報取得までの流れ
① ダイアログ作成開始の命令
② 表示項目や入力させたい内容をまとめて設定
③ ダイアログを表示させ、ユーザーが入力
④ ダイアログに入力した情報をまとめて変数に取得
コードで表すと、
① Dialog.create
② Dialog.addなにがし
③ Dialog.show
④ Dialog.getなにがし
細かく解説していきます。
① ダイアログ作成開始の命令
Dialog.create("文章");
・ダイアログウィンドウのタイトル設定にあたる
② 表示項目や入力させたい内容をまとめて設定
入力したい情報や、入力形式によって命令が異なります。
Dialog.addMessage("文章");
・文章を表示させるだけ。入力は無し。コメントとして使う
Dialog.addString("文章",初期値);
・文字列の入力領域を表示
Dialog.addNumber("文章",初期値);
・数値を入力領域を表示
Dialog.addChoice("文章",items);
・プルダウン式の入力領域を表示。あらかじめプルダウンの項目を格納した配列(items)を作成しておく
Dialog.addRadioButtonGroup("文章",items,行,列,初期値);
・どれか一つだけ選択するラジオボタンを表示。あらかじめラジオボタンの項目を格納した配列(items)を作成しておく。行と列はラジオボタンの配置の仕方
Dialog.addCheckbox("文章",初期値);
・チェック欄ボックスを表示。初期値は、チェック状態なら「true」、チェック無しなら「false」
③ ダイアログを表示させ、ユーザーが入力
Diaog.show;
・ここで初めてダイアログが表示され、このタイミングでユーザーが入力することになる
④ ダイアログに入力した情報をまとめて変数に取得
上の②で入力した命令に対応した「getなにがし」で入力情報を拾っていく。
記述順で紐づくので、正しく取得するためには「getなにがし」の記述順は「addなにがし」と同じ順番にしなければいけない。
Dialog.getString();
・addStringに対応。返り値は入力した文字列
Dialog.getNumber();
・addNumberに対応。返り値は入力した数値
Dialog.getChoice();
・addChoiceに対応。返り値は選択したitems内の要素
Dialog.getRadioButton();
・addRadioButtonGroupに対応。get側はGroupが付かないので注意。返り値は選択したitems内の要素
Dialog.getCheckbox();
・addCheckboxに対応。返り値はtrueなら「1」、falseなら「0」
では実例で確認してみましょう!
情報入力ダイアログのサンプルコード
//example 9
Dialog.create("Your Data")
Dialog.addMessage("Enter Your Personal Information");
Dialog.addString("Name","David Lynch");
Dialog.addNumber("Age",75);
items = newArray("Male","Female","Other");
Dialog.addChoice("Gender",items);
items2 = newArray("Cofee","Cherry Pie","Donut");
Dialog.addRadioButtonGroup("Favorite food",items2,3,1,"Cofee");
Dialog.addCheckbox("Smoking",true);
Dialog.show;
name = Dialog.getString();
age = Dialog.getNumber();
gender = Dialog.getChoice();
food = Dialog.getRadioButton();
smoking = Dialog.getCheckbox();
print("Name : ", name);
print("Age : ",age);
print("Gender : ",gender);
print("Favorite Food : ",food);
print("Smoking : ",smoking);
こんな感じです!
ダイアログ表示までの手続きが少し煩雑ですが、一括で情報を入力したい時にはぜひ試してみて下さい!
おしまい
・公開したマクロのまとめ