Home of site/Basic Macro General3

Macroの杜(LibreOffice Basic編 / General)


ScriptForgeライブラリ / PopupMenu
< 戻る

GMenu-)[General]PopupMenu(1)
【Movie】実行結果
ScriptForgeライブラリのPopupMenu
を利用したpopup menuです。

サブメニューは 不等号で表します。

ID値は以下のようになります。
【Id】
Item A	:1
Item B	:2
Item B.1:3
Item B.2:4
--- :5
Item C	:6
Item C.1	:7
Item C.1.1	:8
Item C.1.2	:9
Item C.2	:10
Item C.2.1	:11
Item C.2.2	:12
--- :13
Item C.2.3	:14
Item C.2.4	:15

Sub ShowPopup()
	GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
	Dim myPopup As Object
	Dim oPos_X as Integer, oPos_Y as Integer
		oPos_X = 600
		oPos_Y = 300
		Set myPopup = CreateScriptService("SFWidgets.PopupMenu", ,oPos_X,oPos_Y)
		With myPopup
			.AddItem("Item A", name := "別名", Tooltip := "1")
			.AddItem("Item B>Item B.1", Tooltip := "3")
			.AddItem("Item B>Item B.2", Tooltip := "4")
			.AddItem("---")
			.AddItem("Item C>Item C.1>Item C.1.1", Tooltip := "8")
			.AddItem("Item C>Item C.1>Item C.1.2", Tooltip := "9")
			.AddItem("Item C>Item C.2>Item C.2.1", Tooltip := "11")
			.AddItem("Item C>Item C.2>Item C.2.2", Tooltip := "12")
			.AddItem("Item C>Item C.2>---")
			.AddItem("Item C>Item C.2>Item C.2.3", Tooltip := "14")
			.AddItem("Item C>Item C.2>Item C.2.4", Tooltip := "15")
		End With
    	vResponse = myPopup.Execute()
    	MsgBox("Selected item ID: " & vResponse)
    	for i = 1 to 2
    		vResponse = myPopup.Execute(returnid := False)
    		MsgBox("Selected item Name(" & i & "): " & vResponse)
    	next i
    	myPopup.Dispose()
End Sub

GMenu-)[General]PopupMenu / RadioButton
【Movie】実行結果


RadioButton タイプの表示にすることも可能です。

選択したItemにCheck( 黒点 )が移ります。

右図の動画で、「いいえ」を選んだ後の表示では
Checkが移っていることがわかります


Sub ShowPopup()
	GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
	Dim myPopup As Object
	Dim oPos_X as Integer, oPos_Y as Integer
		oPos_X = 300
		oPos_Y = 300
		Set myPopup = CreateScriptService("SFWidgets.PopupMenu", ,oPos_X,oPos_Y)
		With myPopup
			.AddRadioButton("Item A", name := "別名A", Tooltip := "1",status:= True)
			.AddRadioButton("Item B", name := "別名B", , Tooltip := "2")
		End With
		i = 1
		Do
			vResponse = myPopup.Execute(returnid := False)
			oDisp = vResponse & "で良いですか?"
			oAns = msgbox(oDisp,4,"確認")
			if oAns <> 7 then
				exit Do
			End If
			i = i + 1
			if i > 5 then
				oDisp = "選択制限回数を超えました"
				msgbox(oDisp,0,"終了")
				exit sub
			end if
		Loop
    	
    	MsgBox vResponse
    	myPopup.Dispose()
End Sub

GMenu-)[General]PopupMenu / CheckBox
【Movie】実行結果


CheckBox タイプの表示にすることも可能です。

選択したItemのCheckが変わります。

右図の動画で、「いいえ」を選んだ後の表示では
Checkが変わっていることがわかります。

ただし、取得できるのは、最後にクリックしたItemです。

Sub ShowPopup()
	GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
	Dim myPopup As Object
	Dim oPos_X as Integer, oPos_Y as Integer
		oPos_X = 300
		oPos_Y = 300
		Set myPopup = CreateScriptService("SFWidgets.PopupMenu", ,oPos_X,oPos_Y)
		With myPopup
			.AddCheckBox("CheckBox1",status:= False)
			.AddCheckBox("CheckBox2",status:= False)
		End With
		i = 1
		Do
			vResponse = myPopup.Execute(returnid := False)
			oDisp = vResponse & "を変更しました。" & Chr(13) & Chr(13) & "終了しますか?"
			oAns = msgbox(oDisp,4,"確認")
			if oAns <> 7 then
				exit Do
			End If
			i = i + 1
			if i > 5 then
				oDisp = "選択制限回数を超えました"
				msgbox(oDisp,0,"終了")
				exit sub
			end if
		Loop
    	myPopup.Dispose()
End Sub

GMenu-)[General]PopupMenu by Mouse Event
【Movie】実行結果




Listener 及び Mouse Eventと組み合わせると
MouseをClickした時にPopupMenuを表示させることが
できます。

以下は 既存Dialog1上でMouseの右ボタンを
Clickした時のみPopupMenuが表示されます。

注意:
 Dialog1は事前に作成しておく必要があります。

Global oUnoDialog As Object Sub DialogListener() Dim oMouseListener as Object DialogLibraries.LoadLibrary("Standard") oUnoDialog = CreateUnoDialog(DialogLibraries.Standard.Dialog1) ' ' Dialog1 に MouseClick Listenerの追加 oMouseListener = CreateUnoListener("Ltn_","com.sun.star.awt.XMouseListener") oUnoDialog.addMouseListener(oMouseListener) oUnoDialog.execute ' ' Mouse Listenerの削除 oUnoDialog.removeMouseListener(oMouseListener) ' oUnoDialog.dispose() msgbox "Success" End Sub ' MethodはDummyでも全て定義の事 Sub Ltn_disposing(oEvent as com.sun.star.lang.EventObject) End Sub ' Mouse Buutonが押された時 Sub Ltn_mousePressed(oEvent as com.sun.star.awt.MouseEvent) select case oEvent.Buttons case com.sun.star.awt.MouseButton.RIGHT call MyPopupClick(oEvent) end select End Sub ' Mouse Buutonがreleaseされた時 Sub Ltn_mouseReleased(oEvent as com.sun.star.awt.MouseEvent) End Sub Sub Ltn_mouseEntered(oEvent as com.sun.star.awt.MouseEvent) End Sub Sub Ltn_mouseExited(oEvent as com.sun.star.awt.MouseEvent) End Sub Sub MyPopupClick(Optional poMouseEvent as Object) GlobalScope.BasicLibraries.loadLibrary("ScriptForge") Dim myPopup As Object Set myPopup = CreateScriptService("PopupMenu", poMouseEvent) With myPopup .AddItem("Item A", name := "アイテム1", Tooltip := "1") .AddItem("Item B", name := "アイテム2", Tooltip := "2") end with Dim vResponse As Variant vResponse = myPopup.Execute(False) msgbox vResponse myPopup.Dispose() exit sub oBad: exit sub End Sub
inserted by FC2 system