title: Phi:Module Functions
author: YOSHIDA Kazuhiro
mailto: moriq@moriq.com

1. Phi:module functions

%c:Phi:module% で定義される関数は次のとおり。

1.1. Menu 関連

%c:Phi% は比較的簡単にメニューを用意できる。典型的な記述例は次のようなものだ。
--ruby
Phi.new_menu form, :menu, [
  Phi.new_item('&File', '', :mi_file).add(
    Phi.new_item('&Open', 'Ctrl+O', :mi_open),
    Phi.new_item('E&xit', '', :mi_exit)
  ),
  Phi.new_item('&Options', '', :mi_opt).add(
    Phi.new_item('&Stretch', '', :mi_stretch),
    Phi.new_item('&Center', '', :mi_center)
  ),
  Phi.new_item('&Help', '', :mi_help),
]
--
: new_menu(parent, name, items) : Phi::MainMenu
  メインメニューを作成し，初期化する。

  : parent : Object

  : name : String or Symbol

  : items : Array of Phi::MenuItem

: new_sub_menu(caption, name, items, enabled=true) : Phi::MenuItem
  サブメニューを示すメニュー項目を作成して初期化する。

  : caption : String

  : name : String or Symbol

  : items : Array of Phi::MenuItem

  : enabled : true or false

: new_item(caption, scutstr, name, checked=false, enabled=true) : Phi::MenuItem
  メニュー項目を作成して初期化する。

  : caption : String
    メニュー項目を表わす表示文字列

  : scutstr : String
    関連付けるショートカット文字列

    %c:"Shift+Ctrl+A", "Esc", "Ctrl+Enter"% というように（シフトキー＋）キーという形式で記述します。シフトキーと特殊キーの記述には次のものが使用できます。

    : シフトキー
      %c:'Shift+' 'Ctrl+' 'Alt+' '^'%
    : 特殊キー
      %c:'BkSp' 'Tab' 'Esc' 'Enter' 'Space' 'PgUp' 'PgDn' 'End' 'Home' 'Left' 'Up' 'Right' 'Down' 'Ins' 'Del' 'F1'..'F11'%

    %c:'^I'% で %c:'Ctrl+I'% と同じ。
    %c:'F12'% は効かないようです。また、F10 など IME の状態などにより反応しなくなるキーもあります。またそれとは逆に、ショートカットでトラップしてしまうと Windows のキー操作に支障が出る場合もあります。使うとまずい組み合わせが見つかったら ML でお知らせください。

    : 参考
      %c:$(DELPHI5)\source\vcl\consts.pas[SmkcBkSp]%
      %c:$(DELPHI5)\source\vcl\menus.pas[TextToShortCut]%

  : name : String or Symbol
    メニュー項目の名前

  : checked : Boolean
    %v:caption% の横にチェックマークを付けるかどうか

    メニュー項目をチェックボックスのように機能させることができる。

    : true
      チェックマークが付く。

    : false (default)
      チェックマークは付かない。

  : enabled : Boolean
    メニュー項目が使用可能かどうか

    : true (default)
      ユーザーがマウスで項目を選択すると， Phi::MenuItem#click を呼び出す。

    : false
      メニュー項目は淡色表示になり，ユーザーはその項目を選択できないが， Phi::MenuItem#click の呼び出しは %v:enabled% が %c:false% のときでも有効だ。

: new_line : Phi::MenuItem
  メニューのセパレータを作成する。
