HyperCard tribute

カスタムメニューを作成


 HyperCardはオブジェクトの数が多くなるとスピードが遅くなるという欠点があります。そこで、できるだけオブジェクトの数を押さえるためにカスタムメニューを作ってみることにします。
 メニューの作成はたった数行で済みますし、スピードの低下も招きませんので、オブジェクトを整理するという点からもメニュー作成は最適だと思います。
 1 
 2 
 3 
 4 
create menu "設定"
put "初期設定,-,サウンド" into menuItem
put "setup,,sound" into m_msg
put menuItem into menu "設定" with menuMsg m_msg

 スタック起動時にメニューを作成するのが最も効率が良いですから、openStackハンドラに書き込むのが良いと思います。

  • create menu "設定"
     1行目でメニューを作成します。これで、メニューバーに「設定」という新しいメニューが作られます。

  • put "初期設定,-,サウンド" into menuItem
     2行目ではメニューの項目データを作成します。つまり、メニュー「設定」をプルダウンしたときに現れる項目の事です。コンマで区切った2番目の項目「-」は、メニュー項目の区切りを表しています。メニューバーのアップルメニューの1番目の項目と2番目の項目の間に線が入っていますが、その線のことです。

  • put "setup,,sound" into m_msg
     3行目では、それぞれのメニュー項目を選んだ時、どのハンドラを呼び出すかを指定するデータを作成しています。メニュー項目「設定」の「初期設定」を選ぶと setupハンドラを実行し、「サウンド」を選ぶと soundハンドラを実行するわけです。区切り線に当たる部分は空白にしておくことを忘れないようにして下さい。

  • put menuItem into menu "設定" with menuMsg m_msg
     2・3行目で作成したデータを用いて、実際にメニューを作成します。


     これでメニュー作成は終わりです。では、次にメニュー削除を説明します。

     1 
    
    delete menu "設定"
    

     スタックを閉じただけではメニューは削除されません。複数のスタックを同時に使っていた場合などは使えないメニューが残ってしまいます。もし、他のスタックで違うスタックで作成したメニューを選択してしまうとエラーとなってしまうので気を付けて下さい。
     メニューバーのリセット方法です。
     1 
    
    reset menubar
    

     初期のメニュー状態に戻ります。メニューを作成した場合は、スタック終了時にこのスクリプトを実行するとよいでしょう。