display dialog 文字列1 [default answer 文字列2] [buttons リスト] [default button 整数1 | 文字列3] [with icon 整数2 | 文字列4 | note/caution/stop] [giving up after 整数3]
文字列1 | ダイアログに表示 |
文字列2 | 入力フィールドの初期文字列 |
リスト | 3つまでのボタン名 |
整数1 | デフォルトボタンを番号で指定 |
文字列3 | デフォルトボタンを名前で指定 |
整数2 | 表示するアイコンをIDで指定 |
文字列4 | 表示するアイコンを名前で指定 |
note/caution/stop | システムのアイコンを指定 |
整数3 | 自動的にダイアログを閉じる(タイムアウト)までの時間(8.5以降) |
レコード | dialog replyクラス |
ダイアログボックスを表示し、オプションで入力フィールドも表示。
default answer に""(空文字列)を設定すれば、空の入力フィールドを表示する。
また、改行の入った文字列を設定すれば、幅の広い入力フィールドを表示する。この場合、ダイアログに改行を入力してもデフォルトのボタンは押されず、テキストボックス内で改行される。
stop/note/cautionは、ID番号としてはそれぞれ1/2/3に対応している。
アプレットのリソースにアイコンを格納しておくと、そのアイコンを使用できる。
キャンセルが選択された場合、エラー(-128)を返して停止するので、処理を続けたい場合は、try文を使ってエラーに備えておく必要がある。
buttonsでボタン名を"キャンセル"に指定した場合もエラー(-128)を返すので気を付けたい。エラーを発生させたくない場合は、前後に空白を挟み" キャンセル "とする工夫が必要。
表示前にactivateを実行しておかないと、ウィンドウの後ろに隠れてしまうことがある。
Mac OS Xでは、tellの中にある場合、そのアプリケーションに含まれるウィンドウとして扱われるように仕様が変更された。
極力、なにかのアプリケーションのtellブロックで使う方がいいだろう。
MacOS9.0.2以降では、ボタンが重なって表示されるバグがあるが、一応クリックはできるので、スクリプトが動かなくなることは無い。9.0.4アップデータで修正されている。
何故か、このバグは9.1で復活している。
どうしても気になる場合は、例2のようにボタン名を渡してやることで、ボタンが重なる症状を回避できる。
Mac OS X10.1.5までは、アプレットから実行すると日本語が化けるというダイアログ共通のバグがあったが、10.2で修正された。と思ったら10.2.1で復活したっぽい。たぶん10.3あたりで修正されている。
OS X10.10でアプリケーション形式で保存した場合、default answer
を指定した場合のダイアログへの文字の入力ができない。
アプリケーションのtellブロックで使った場合は入力できる。
このバグは、OS X10.10.2で修正された。
display dialog "テストです" with icon note
display dialog "テスト" buttons {"キャンセル", "OK"} default button 2