context-popup (プロシージャ)
public {context-popup
menu-pane:#MenuPane = null,
menu-pane-proc:#{proc-type {Visual}:MenuPane} = null
}:EventHandler
インポート元: CURL.GUI.STANDARD. package 内で定義されています CURL.GUI.CONTROL-LOGICAL.

コンテキスト ポップアップ メニューを指定します。

menu-pane: ポップアップする MenuPane です。
menu-pane-proc: ポップアップする MenuPane を取得するために呼び出されるプロシージャです。このプロシージャに対する引数は、このコンテキスト メニューの添付先とされる Graphic です。

戻り値

Graphic が構築されたときに引数リストで使用するのに適している、あるいは Graphic.add-event-handler への引数として使用するのに適している EventHandler です。

注意事項

context-popup イベント ハンドラが Graphic に追加されている場合、ユーザーが Graphic 上で右クリックすると、指定された MenuPane がポップアップします。

menu-pane が指定されている場合、これは毎回ポップアップします。

menu-pane-proc が提供されると、ユーザーが Graphic 上で右クリックするたびに menu-pane-proc が、 Graphic を引数として呼び出され、結果の MenuPane がポップアップされます。

次の例では、左側の RectangleGraphic は、menu-pane キーワード引数を使用するコンテキスト ポップアップ メニューを持ちます。右側の RectangleGraphic は、menu-pane-proc を使用し、2 つの RectangleGraphic が同じ塗りつぶし色を持つかどうかに基づいて、コンテキスト ポップアップ メニューのテキストが異なるようにします。


{value
    let rect1:RectangleGraphic =
        {RectangleGraphic
            width=1in, height=0.5in,
            {context-popup
                menu-pane={MenuPane
                              {MenuAction
                                  label="Blue Fill",
                                  {on Action do
                                      set rect1.fill-color =
                                          "blue"}},
                              {MenuAction
                                  label="Red Fill",
                                  {on Action do
                                      set rect1.fill-color =
                                          "red"}}}}}
    let rect2:RectangleGraphic =
        {RectangleGraphic
            width=1in, height=0.5in,
            {context-popup
                menu-pane-proc=
                {proc {r:Visual}:MenuPane
                    let mpane:MenuPane =
                        {MenuPane
                            {MenuAction
                                label="Blue Fill",
                                {on Action do
                                    set rect2.fill-color =
                                        "blue"}}}
                    {if rect1.fill-color != rect2.fill-color
                     then {mpane.add
                              {MenuAction
                                  label="Same as rect1",
                                  {on Action do
                                      set rect2.fill-color =
                                          rect1.fill-color}}}}
                    {return mpane}}}}
    {HBox spacing=6pt, rect1, rect2}}