タイトルAppleScript Working》5 _ AppleScript Studioでのポップアップメニュー(2)カテゴリーAppleScript, AppleScript Working
作成日2002/2/8 2:0:27作成者新居雅行
――――ポップアップメニューのプログラミング
AppleScript側のオブジェクト構成は、次のようになっている。ただし、popup buttonから、menu itemの集合を参照できる場合もある。

popup button ― menu → menu item

まず、いずれの項目も、項目名は、titleプロパティで扱う。popup buttonの場合は、画面に見えている項目名がtitleプロパティで取得できる。従って、ポップアップメニューの選択された項目名は、titileプロパティを使えば分かる。たとえば、変数theWindowが、ポップアップメニューのあるウインドウを参照しているとして、ポップアップメニューのAppleScript Nameがp1だとすると、次のようにして選択したメニュー項目名をダイアログボックスに表示できる。

set thePopup to popup button "p1" of theWindow
display dialog (title of thePopup) as string

一方、プルダウンメニューはtitleで項目名は取り出せるが、取り出すことはあまりないかもしれないが、場合によっては書き換えたいと思うところだろう。しかしながら、プルダウンメニューにしたときにはtitleプロパティには書き換えができないので、別の方法を使う。これは後でしよう。
ポップアップメニューで、ある項目を選択したいときには、current menu itemプロパティを使う。これに、選択したいmenu itemを設定するのであるが、変数thePopupがポップアップメニューを参照しているとして、たとえば、2つ目の項目を選択させたいのなら、次のようなプログラムとなる。

set current menu item of thePopup to menu item 2 of thePopup

ここでは、menu itemがpopup buttonに属するような使い方での記述が可能である。
一方、メニュー項目をプログラムで新たに作りたい場合には、popup buttonのmenuのmenu itemsに新しいmenu itemを作るといった階層を追った記述が必要になる。たとえば、thePopupがポップアップメニューを参照している場合、次のようなプログラムで、最初の項目のさらに前に新しく「NewItem」というメニュー項目を作成する。

make new menu item at the before menu item 1 of menu 1 of thePopup ツ
with properties {title:"NewItem"}

ここではat以降に、最初のメニュー項目の前という記述を行ったが、メニューの最後に項目を追加するなら「at the end of menu items…」でいいだろう。
なお、ポップアップメニューの「nemu 1」つまり、menuの集合の最初のものを参照して、それに含まれるmenu itemの集合を参照している。こうしないで、「menu 1 of」を省略してもメニュー項目は作られるが、メニュー項目は選択できない状態になっているので、ここではきちんとオブジェクト階層をたどるのが基本のようだ。
なお、プルダウンメニューの場合、実はコントロールに見えているのはメニュー項目の1つ目である。従って、前のプログラムと同じように、menu itemの集合の最初にmenu itemを作ってしまうと、その新たに作った項目名が、コントロール上に見える文字列となる。
popup buttonやmenu itemには、enabledというプロパティがあり、これをfalseに設定することで、選択できないグレーの項目にすることができる。
menu itemにあるseparator itemというプロパティは、その項目が、メニューのグルー訳の区切り項目かどうかを判断するのに利用できるだろう。
menu itemにあるstateプロパティはメニュー項目に設定されたチェックマークの有無を調べることができる。あるいはチェックを設定することができる。プルダウンメニューでは使うことがあるかもしれない。このstateの値が2ならチェックが入り、他の値なチェックは入らない。ポップアップメニューは選択されている項目にチェックが入るのだが、この処理は自動的に行われているので、逆にいえばむやみにメニュー項目にチェックは入れない方がいいだろう。
(この項、以上)
関連リンク