Pulsante nella barra strumenti

Creare una macro - Scrivere uno script - Usare le API
Rispondi
epico
Messaggi: 52
Iscritto il: mercoledì 4 giugno 2014, 11:53

Pulsante nella barra strumenti

Messaggio da epico »

Salve,
In un pulsante inserito nella barra strumenti si riesce ad avere nessun controllo Abilitato/Disabilitato

La macro nel file allegato funziona, serve per spostarsi tra i fogli
La mia richiesta è solo per estetica/didattica, per fare in modo che se mi trovo nel primo foglio si disabiliti il pulsante "Prec" come da immagine
Allegati
nascondiFogli.ods
(82.28 KiB) Scaricato 11 volte
230306-170850.png
230306-170850.png (26.19 KiB) Visto 165 volte
OpenOffice 4.1 su Win10
epico
Messaggi: 52
Iscritto il: mercoledì 4 giugno 2014, 11:53

Re: Pulsante nella barra strumenti

Messaggio da epico »

Dalle risposte ricevute presumo non ci sia una soluzione :!: :(
Spero di essere più fortunato la prossima :?:
OpenOffice 4.1 su Win10
patel
Volontario attivo
Volontario attivo
Messaggi: 3927
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Pulsante nella barra strumenti

Messaggio da patel »

Magari la soluzione c'è, ma non un utente del forum che la conosce.
-------------------
Libre Office 7.4 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
nickGiard
Messaggi: 53
Iscritto il: lunedì 14 maggio 2012, 22:04

Re: Pulsante nella barra strumenti

Messaggio da nickGiard »

"Magari la soluzione c'è, ma non un utente del forum che la conosce."
Probabilmente la richiesta in forma didattica potrebbe essere interessante.
Cercando nel lungo elenco dei GetProcessServiceManager.getAvailableServiceNames del Process Service Manager mi sono imbattuto nel com.sun.star.frame.ToolbarController.
Andando sulle API:
ToolbarController Service Reference
is an abstract service for a component which offers a more complex user interface to users within a toolbar.
A generic toolbar function is represented as a button which has a state (enabled,disabled and selected, not selected). A toolbar controller can be added to a toolbar and provide information or functions within a more sophisticated user interface.
A typical example for toolbar controller is the font chooser within the toolbar. It provides all available fonts in a dropdown box and shows the current chosen font.
Altra API e' ToolbarControllerFactory, mentre non si trova esposta nelle API com.sun.star.ui.ToolBarFactory.
Probabilmente bisognerebbe trovare il contenitore di tutte le Toolbar, ciclare o getByName per avere la propria toolbar, trovare i pulsanti e quindi applicare il relativo stato.
Spero che qualcuno che ne sa molto più di me possa dare un interessante input.
Un caro saluto a tutti :) :)
Nicola con LibreOffice 7.1 (x64) su Windows 11
epico
Messaggi: 52
Iscritto il: mercoledì 4 giugno 2014, 11:53

Re: Pulsante nella barra strumenti

Messaggio da epico »

Condivido la richiesta
Spero che qualcuno che ne sa molto più di me possa dare un interessante input.
:ucrazy:
OpenOffice 4.1 su Win10
nickGiard
Messaggi: 53
Iscritto il: lunedì 14 maggio 2012, 22:04

Re: Pulsante nella barra strumenti

Messaggio da nickGiard »

Salve
continuando a cercare sull'argomento, poiché sviluppare codice è un po come fare il detective, ho trovato una cosa che mi sembra interessante:
[Solved] Macro to Open a Toolbar I just created?
https://forum.openoffice.org/en/forum/v ... 904aa5249b
da hanya :

Codice: Seleziona tutto

Sub ToolbarTest
  oDoc = ThisComponent
  sResId = FindToolbar(oDoc, "Controls")
  if not isnull(sResId) then
    oManager = oDoc.getCurrentController().getFrame().LayoutManager
    oManager.createElement(sResId)
    oManager.showElement(sResId)
  end if
End Sub

Function FindToolbar(oDoc, sName As String)
  oManager = oDoc.getUIConfigurationManager()
  aElements = oManager.getUIElementsInfo(_
       com.sun.star.ui.UIElementType.TOOLBAR)
  itemset = nothing
  for i = 0 to ubound(aElements) step 1
    a = aElements(i)
    if GetPropertyValueByName(a, "UIName") = sName then
      itemset = a
      exit for
    end if
  next
  if not isnull(itemset) then
    FindToolbar = GetPropertyValueByName(itemset, "ResourceURL")
  else
    FindToolbar = nothing
  end if
End Function

Function GetPropertyValueByName(aElements, sName) As Variant
  found = nothing
  for i = 0 to ubound(aElements) step 1
    if aElements(i).Name = sName then
      found = aElements(i).Value
    end if
  next
  GetPropertyValueByName = found
End Function
Ovviamente ora il passo successivo è far girare il codice in modalità debug e vedere gli oggetti che genera per poterli gestire.
Invito chi può a dare ulteriori stimoli alla discussione.

Trovo anche "5.44.1.1. My first toolbar" pag. 132 in Useful Macro Information For OpenOffice.org By Andrew Pitonyak che studiandolo può dare utili informazioni.
Nicola con LibreOffice 7.1 (x64) su Windows 11
Gaetanopr
Volontario
Volontario
Messaggi: 3208
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Pulsante nella barra strumenti

Messaggio da Gaetanopr »

Tramite LayoutManager riesco ad abilitare e disabilitare la barra personalizzata con tutti i comandi che ne fanno parte, ma non dei singoli elementi, anche se si riesce ad accedere alle loro proprietà, sicuramente mi sfugge qualcosa, ad ogni modo ho aggirato l'ostacolo anche se non mi piace l'attuale soluzione , creando due barre personalizzate, una per il comando prec e l'altra per il comando succ.
All'apertura del file i pulsanti sono entrambi abilitati ma poi cliccando su di essi si disabilita quello cliccato e viceversa.
Allegati
nascondiFogli_gaetano.ods
(85.13 KiB) Scaricato 2 volte
prec_succ.PNG
prec_succ.PNG (2.38 KiB) Visto 48 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2327
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Pulsante nella barra strumenti

Messaggio da unlucky83 »

Buonasera a tutti. Ho passato alcune ore nei giorni scorsi su questo quesito. Ho provato un pò tutte le proprietà e i metodi che sono riuscito a vedere con la macro xray, ma sono riuscito solo a disabilitare tutto il toolbar. Dei singoli elementi sono solo riuscito a scoprire le proprietà quali nome, dimensione dell'icona etc... senza possibilità di modificare i parametri.
Ottimo stratagemma quello di @Gaetanopr
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Rispondi