Como inserir MenuBar no Diálogo

Olá pessoal!

Como faço para inserir um MenuBar numa caixa de diálogo?

Instanciei como “com.sun.star.awt.MenuBar”, adicionei itens ao mesmo, mas não sei como fazer o mesmo ficar visível na caixa de diálogo.

Alguém tem alguma sugestão?

Segue código e documento.

Option Explicit

Private oDlg 		As Object
Private frmCadastro As Object
Private lblMsg		As Object 
Private oMenuBar 	As Object  

Sub FormMenuBar
	oMenuBar = createUnoService("com.sun.star.awt.MenuBar")

	DialogLibraries.loadLibrary("Library1")
	oDlg = createUnoDialog(DialogLibraries.Library1.getByName("dlgCadastro"))
	lblMsg = oDlg.getControl("lblMsg")
	frmCadastro = oDlg.getModel(oDlg)
	
	With oMenuBar
		.insertItem(1 ,"New", 4 , 1  )
		.insertItem(2 ,"Open" , 4 , 2  )
		.insertItem(3 ,"Close" , 4 , 3  )
	End With

	oDlg.setMenuBar(oMenuBar)
	
	lblMsg.Model.Label = "Foram inseridos  " & oMenuBar.getItemCount & "  Itens no MenuBar"

	oDlg.Execute
	oDlg.Dispose
End Sub

como-inserir-menubar.odt (12.8 KB)

Acho que não tem como implementar/nstanciar o objeto em Caixa de Diálogo, porque não existe controle de formulário desse tipo.
.
Talvez seja possível quando construído completamente por código.
.
Tentei utilizar algumas funções do Livro de Andrew Pitoniak, mas sem sucesso.
.
Os únicos serviços disponíveis para uma Caixa de Diálogo são:


.
Métodos que tentei utilizar de alguma forma para criar o MenuBar, tiradas do livro dele:

Sub createInsertControl(oDlgModel, index%, sName$, sType$, props())
Dim oModel
   oModel = oDlgModel.createInstance(sType$)
   setProperties(oModel, props())
   setProperties(oModel, Array("Name", sName$, "TabIndex", index%))
   oDlgModel.insertByName(sName$, oModel)
   REM This changes the value because it is not passed by value.
   index% = index% + 1
End Sub

Sub setProperties(oModel, props())
Dim i As Integer
   For i=LBound(props()) To UBound(props()) Step 2
      oModel.setPropertyValue(props(i), props(i+1))
   Next
End sub

.
Obs.: Não pesquisei no fórum na categoria inglês.

É possível que tenha encontrado uma pista no AOO Fórum.

Como havia desconfiado, talvez só possa ser implementado usando Listeners.

Porém, o código usado foi python.

Sim, o código neste tema insere um menu, mas eles usam uma janela, não uma caixa de diálogo.

1 Like