Top > OOoBasic > Dialog > Example15

ボタンと PopupMenu Edit

ツール - カスタマイズで表示されるダイアログには下向き矢印の付いているボタンがあり、ボタンを押すとメニューが表示されます。同じようなボタンを作成してみます。

popupmenu_button-1.png

filedialog_popupmenu.odt

Edit

ボタンを押すと次のプロシージャが実行されてメニューが表示されます。

Sub PopupButton
  ' get the size of the button
  oButton = oDialog.getControl("CommandButton1")
  aPosSize = oButton.PosSize
  ' set the position of the popup menu
  Dim aRect As New com.sun.star.awt.Rectangle
  With aRect
    .X = aPosSize.X
    .Y = aPosSize.Y + aPosSize.Height
    .Width = 0'100
    .Height = 0'100
  End With
  ' menu listener
  oMenuListener = CreateUnoListener( _
    "PopupMenuListener_", "com.sun.star.awt.XMenuListener")
  ' new popupmenu
  oPopupMenu = CreateUnoService("com.sun.star.awt.PopupMenu")
  ' set listener and insert menu items
  With oPopupMenu
    .addMenuListener(oMenuListener)
    .insertItem(1,"Menu 1",0,0) 'id, label, type, position
    .insertItem(2,"Menu 2",0,2)
    .insertSeparator(1)
    .setCommand(1,"item1")
    .setCommand(2,"item2")
  End With
  ' show popup menu
  oPopupMenu.execute(oDialog.Peer,aRect, _
    com.sun.star.awt.PopupMenuDirection.EXECUTE_DEFAULT)
  oPopupMenu.removeMenuListener(oMenuListener)
End Sub

以下はリスナー用のプロシージャです。メニューが選択されたとき、選択されたメニュー Id からメニューに割り当てられたコマンドを取得しています。

Sub PopupMenuListener_select ( oEv )
  sCmd = oEv.Source.getCommand(oEv.MenuId)
  msgbox sCmd
End Sub
Sub PopupMenuListener_highlight ( oEv )
End Sub
Sub PopupMenuListener_activate ( oEv )
End Sub
Sub PopupMenuListener_deactivate ( oEv )
End Sub
Sub PopupMenuListener_disposing( oEv )
End Sub

以下のインターフェース参照。

  • com.sun.star.awt.XMenu
  • com.sun.star.awt.XMenuBar
  • com.sun.star.awt.XMenuExtended
  • com.sun.star.awt.XPopupMenu
  • com.sun.star.awt.XMenuListener

Attach file: filedialog_popupmenu.odt 1431 download [Information] filepopupmenu_button-1.png 511 download [Information]

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes