メニュー
|
|||||||||||||
| com.sun.star.awt.MenuItemStyle | ||
| CHECKABLE | 1 | チェック可能 |
| RADIOCHECK | 2 | 周囲依存ラジオタイプ |
| AUTOCHECK | 4 | 選択時に自動チェック |
メニューが選択された時にリスナーのイベントオブジェクトからどの項目が選択されたかを知るためにメニューの項目にコマンドを割り振ることができます。 このコマンドを利用すればポップアップメニューに一つのメニューリスナーで対応できます。
setCommand メソッドにメニュー Id および割り当てるコマンドを指定します。
oHelp_Pop = CreateUnoService("com.sun.star.awt.PopupMenu")
With oHelp_Pop
.insertItem(1,"Help Item 1",0,1)
.setCommand(1,"help")
.insertSeparator(2)
.insertItem(2,"Help Item 2",0,3)
.setCommand(2,"about")
End With
上記の場合、リスナーでは次のようにして選択されたメニューに割り当てられたコマンドを取得します。
Sub MenuListener_select( oEv ) sCmd = oEv.Source.getCommand(oEv.MenuId) Select Case sCmd Case "close" ' close window by the menu entry oWindow.removeTopWindowListener(oWindowListener) oWindow.setMenubar(Null) oWindow.dispose() oFrame.close(True) Case "help" msgbox "Needs to help !" Case "about" msgbox "About this example:" & "..." End Select End Sub
select メソッドの引数の com.sun.star.awt.MenuEvent から取得できるのは選択されたメニューの Id のみです。そこで、イベントオブジェクトの Source 要素 (ここでの Source は選択されたメニューが所属しているポップアップメニューオブジェクト) からメニュー Id を指定して、その Id に割り当てられたコマンドを調べます。
コマンドにはプロトコルなども付けると分かりやすくなりますし、他の人が作成したコマンドと重複することが避けられます。プロトコルハンドラーなどを使用した場合にはその点に注意が必要です。
また、このコマンドは項目にフォーカスがあるときに F1 ボタンを押して表示されるヘルプページと対応します。拡張機能ヘルプを提供している場合には同じコマンドを設定するとヘルプのページを容易に参照できるようになります。
チェックが可能な項目の場合、チェックのオン/オフを切り替えられます。項目の Id およびチェックの有無を指定します。
oHelp_Pop.checkItem(1, True)
チェックされているかどうかの判定は isItemChecked メソッドに調べたい項目の Id を指定して行います。
AUTOCHECK を指定した項目では、ユーザーが項目を選択した時点でチェックの表示が切り替わっているためコードでチェックを変更する必要はありませんが、内部のステータスと項目の状態を最初にあわせておく必要があります。
RADIOCHECK を指定した項目のチェックの切り替えはコードで行う必要があります。
対応するメニューの項目にショートカットキーを表示できます。3.1
setAcceleratorKeyEvent メソッドにメニューの Id および KeyEvent struct でショートカットキーを指定します。
aKeyEv = CreateUnoStruct("com.sun.star.awt.KeyEvent")
With aKeyEv
.KeyCode = com.sun.star.awt.Key.H
'.KeyChar = "H"
.Modifiers = com.sun.star.awt.KeyModifier.MOD1 'Ctrl
End With
oHelp_Pop.setAcceleratorKeyEvent(1, aKeyEv)
項目にアイコン画像を設定します。3.1
aProp = CreateUnoStruct("com.sun.star.beans.PropertyValue")
aProp.Name = "URL"
aProp.Value = "file:///E:/usr/current_16.png"
oGP = CreateUnoService("com.sun.star.graphic.GraphicProvider")
aGraphic1 = oGP.queryGraphic(Array(aProp))
oHelp_Pop.setItemImage(1, aGraphic1, False)
setItemImage メソッドの引数は、メニューの Id、設定する画像の XGraphic、画像のサイズ調整の有無です。
項目上にマウスカーソルがきたときに表示されるツールチップのテキストを設定します。3.1
oHelp_Pop.setTipHelpText(1, "Help Tooltip")
メソッドの引数はメニュー項目の Id、表示するテキストです。
項目にサブ項目が表示されるようにするには setPopupMenu メソッドでサブ項目用のポップアップメニューを追加します。メニュー Id およびポップアップメニューを指定します。
oFile_Pop.setPopupMenu(5, oFile_New_Pop)
insertSeparator メソッドの引数に位置を指定して区切り線を追加します。
oFile_Pop.insertSeparator(2)
ロゴとグラデーションのついたラインをメニューの左側に表示します。3.1
aProp2 = CreateUnoStruct("com.sun.star.beans.PropertyValue")
aProp2.Name = "URL"
aProp2.Value = "file:///E:/usr/current_16.png"
aMenuLogo = CreateUnoStruct("com.sun.star.awt.MenuLogo")
with aMenuLogo
.Graphic = oGP.queryGraphic(Array(aProp2))
.StartColor = RGB(255, 255, 255)
.EndColor = RGB(0, 0, 0)
End With
oHelp_Pop.setLogo(aMenuLogo)