Buon giorno. Propongo qui una questione già proposta giorni addietro qui:
https://forum.openoffice.org/it/forum/viewtopic.php?t=12619&sid=82d95bbdf756b8cc7d96c4605af2c88c
Sempre continuando ad esplorare le possibilità di libreoffice, ho inserito nella barra già tratta nell’argomento:https://ask.libreoffice.org/t/nuova-toolbar-generata-ma-non-visualizzata/112700
l’abbinamento di una icona.
Ho modificato leggermente la sub x includere i vari test.
Eseguita la Sub senza errori, in OpenOffice l’icona appare in luogo dell’etichetta, mentre in LibreOffice no.
Le istruzioni allegate sono per una barra di Calc, ma ho provato anche con Write. Così come ho provato anche con una barra del documento . Sono tutte prove con esito negativo.
E ancora ho provato sia con immagine su disco che con immagine già incorporata in LibreOffice.
L’icona (il dischetto), come si vede dalle immagini, è abbinata al comando (icona).
Immagino che in LibreOffice debba fare qualcosa, ma non ho capito cosa.
Ringrazio in anticipo chi vorrà aiutarmi.
di seguito la sub:
sub CreaBarra_Di_Questo_Attivo_conIcoma()
'scaricato da 'https://forum.openoffice.org/it/forum/viewtopic.php?f=28&p=13993#p13993
' titolo Toolbar da Macro, queste sconosciute
'====================================================
' usando thiscomponent.UIConfigurationManager o in alternativa
' alternativa xyUNO = createUnoService("com.sun.star.ui.ModuleUIConfigurationManagerSupplier")
' alternativa oConfManager = xyUNO.getUIConfigurationManager("com.sun.star.sheet.SpreadsheetDocument")
' https://www.openoffice.org/api/docs/common/ref/com/sun/star/ui/XUIConfigurationManager.html
'====================================================
dim sURLToolbar As string, sNameToolbar as string
dim oToolbar as object '
dim oConfManager as object
dim I as integer '
Dim sMyToolbarCmdId As String
Dim nomeimmagine As string, immaginenome As String
dim aToolbarItem(3) as new com.sun.star.beans.PropertyValue
Dim oToolbarSettings
Dim oImageMgr
sMyToolbarCmdId = "///Standard.SubProva.Prima_sub()"
sNameToolbar = "PPRROOVVAA_QuestoConIcona" ' NOME DA ASSOCIARE ALLA TOOLBAR
sURLToolbar = "private:resource/toolbar/custom_PPRROOVVAA_QuestoConIcona" ' RESOURCE URL DELLA TOOLBAR
' nomeimmagine = environ("USERPROFILE") & "\Downloads\sc_save.png"
nomeimmagine = "private:graphicrepository/cmd/sc_save.png"
ImmagineNome = ConvertToURL(nomeimmagine)
oImageMgr = AcquisisciGestoreImmagini()
' Call fremoveCommandIcon(0, sMyToolbarCmdId)
if not oImageMgr.hasImage( 0, sMyToolbarCmdId ) Then 'CommandURL a command URL that should be checked for an associated image
Dim oImage, oImageCmds(0),oImages(0)
oImage = fGetImageFromURL( immaginenome)
if not isNull( oImage ) then
REM *** Insert new image into the Calc image manager
oImageCmds(0) = sMyToolbarCmdId
oImages(0) = oImage
oImageMgr.insertImages( 0, oImageCmds(), oImages() )
end if
End If
dopoimmagine:
'oConfManager = thiscomponent.UIConfigurationManager ' ACQ. User Interface CONFIGURATION MANAGER x questo documento
dim xyUNO: xyUNO = createUnoService("com.sun.star.ui.ModuleUIConfigurationManagerSupplier")
Set oConfManager = xyUNO.getUIConfigurationManager("com.sun.star.sheet.SpreadsheetDocument")
If (oConfManager.hasSettings(sURLToolbar)) Then
oConfManager.removeSettings(sURLToolbar)
End If
oToolbarSettings = oConfManager.createSettings() ' la struttura della barra
oToolbarSettings.UIName = sNameToolbar ' Set a title for our new custom toolbar
'---------------------------------------------'
aToolbarItem(0).Name = "CommandURL"
aToolbarItem(0).Value = sMyToolbarCmdId ' "macro:///Standard.SubProva.Prima_sub()"
aToolbarItem(1).Name = "Label"
aToolbarItem(1).Value = "icona" ' Esegui 1"
aToolbarItem(2).Name = "Type" '
aToolbarItem(2).Value = 0 ' Valore per Type (Con 0 si vede la scritta...)
aToolbarItem(3).Name = "Visible" ' ARGOMENTO PER BOTTONE VISIBILE O NASCOSTO
aToolbarItem(3).Value = true ' true per VISIBILE, false per NASCOSTO
oToolbarSettings.insertByIndex(0, aToolbarItem())
oConfManager.insertSettings(sURLToolbar , oToolbarSettings)
ThisComponent.CurrentController.Frame.LayoutManager.showElement( sURLToolbar)
oConfManager.store()
End Sub
Function AcquisisciGestoreImmagini()
' ex getImageManager()
Dim oModuleMgr, oModuleCfgMgrSupplier, oModuleIdentifier, oModuleCfgMgr
oModuleMgr = createUnoService( "com.sun.star.frame.ModuleManager" )
oModuleCfgMgrSupplier = createUnoService( "com.sun.star.ui.ModuleUIConfigurationManagerSupplier" )
oModuleIdentifier = oModuleMgr.identify( ThisComponent )
oModuleCfgMgr = oModuleCfgMgrSupplier.getUIConfigurationManager( oModuleIdentifier )
AcquisisciGestoreImmagini = oModuleCfgMgr.getImageManager
End Function
Function fGetImageFromURL( URL as String ) as Variant
Dim oMediaProperties(0) As New com.sun.star.beans.PropertyValue
Dim sProvider$ : sProvider = "com.sun.star.graphic.GraphicProvider"
Dim oGraphicProvider
REM Create graphic provider instance to load images from files.
oGraphicProvider = createUnoService( sProvider )
REM Set URL property so graphic provider is able to load the image
oMediaProperties(0).Name = "URL"
oMediaProperties(0).Value = URL
REM Retrieve the com.sun.star.graphic.XGraphic instance
fGetImageFromURL = oGraphicProvider.queryGraphic( oMediaProperties() )
End Function