[Risolto] Interazione tra ComboBox e ListBox

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Avatar utente
giuserpe
Messaggi: 127
Iscritto il: mercoledì 23 aprile 2014, 12:53

[Risolto] Interazione tra ComboBox e ListBox

Messaggio da giuserpe »

Per lo sviluppo di LeenO, sto mettendo in ordine delle tabelle dei pesi per il calcolo della quantità relative al ferro di armatura piuttosto che delle carpenterie metalliche o ancora di tubi e così via.
Ho messo ogni tabella in forma di lista di stringhe in una ListBox. Quindi, a seconda della tabella che mi interessa, devo avviare un Dialog piuttosto che un altro.
Il punto è questo: mi piacerebbe tenere in qualche modo tutte le ListBox in un unico Dialog e decidere quale di queste visualizzare a seconda della stringa visualizzata in una ComboBox.
Sarebbe ancora meglio se l'unica ListBox venisse compilata, via macro, a secondo del titolo scelto nella ComboBox. Sono certo che sia fattibile, ma non riesco a trovare documentazione in tal senso.
La questione è proprio questa: come riempio una ListBox via macro? Per il resto dovrei riuscire a cavarmela da solo.

Ciao
Giuseppe
Ultima modifica di charlie il giovedì 15 ottobre 2015, 20:33, modificato 2 volte in totale.
Motivazione: Aggiunto segno di spunta verde
LibreOffice fresh su Windows e Linux
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Interazione tra ComboBox e ListBox

Messaggio da patel »

Codice: Seleziona tutto

Sub FillListbox
  DialogLibraries.loadLibrary("Standard")
  d = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
  d.getControl("ListBox1").addItems(Array("Voce 1", "Voce 2", "Voce 3", "Altri"), 0)
  d.execute()
  d.dispose()
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Interazione tra ComboBox e ListBox

Messaggio da Gaetanopr »

Un'altra possibile soluzione allego esempio con listbox che cambia i dati in funzione della scelta effettuata nella combobox
Allegati
ListBox_Dinamica.ods
(12.54 KiB) Scaricato 299 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
giuserpe
Messaggi: 127
Iscritto il: mercoledì 23 aprile 2014, 12:53

Re: Interazione tra ComboBox e ListBox

Messaggio da giuserpe »

Non suo come ringraziarvi...
Giuseppe
LibreOffice fresh su Windows e Linux
Avatar utente
giuserpe
Messaggi: 127
Iscritto il: mercoledì 23 aprile 2014, 12:53

Re: [risolto] Interazione tra ComboBox e ListBox

Messaggio da giuserpe »

Ho risolto in maniera non definitiva con il codice qui di seguito:

Codice: Seleziona tutto

Sub FillListbox
	tabelle() = Array("Tondo per c.a.", "Profilati HEA") ' 
	
	FerroTondo() = Array("ø4 - 0,099", "ø5 - 0,154", "ø6 - 0,222", "ø7 - 0,302", "ø8 - 0,395", "ø9 - 0,499", "ø10 - 0,617", "ø11 - 0,746", "ø12 - 0,888", "ø13 - 1,042", "ø14 - 1,208", "ø15 - 1,387", "ø16 - 1,578", "ø17 - 1,782", "ø18 - 1,998", "ø19 - 2,226", "ø20 - 2,466", "ø21 - 2,719", "ø22 - 2,984", "ø23 - 3,261", "ø24 - 3,551", "ø25 - 3,853", "ø26 - 4,168", "ø27 - 4,495", "ø28 - 4,834", "ø29 - 5,185", "ø30 - 5,549", "ø31 - 5,925", "ø32 - 6,313")
	HEA() = Array ("HEA 100 - 16,7", "HEA 120 - 19,9", "HEA 140 - 24,7", "HEA 160 - 30,4", "HEA 180 - 35,5", "HEA 200 - 42,3", "HEA 220 - 50,5", "HEA 240 - 60,3", "HEA 260 - 68,2", "HEA 280 - 76,4", "HEA 300 - 88,3", "HEA 320 - 97,6", "HEA 340 - 105", "HEA 360 - 112", "HEA 400 - 125", "HEA 450 - 140", "HEA 500 - 155", "HEA 550 - 166", "HEA 600 - 178", "HEA 650 - 190", "HEA 700 - 204", "HEA 800 - 224", "HEA 900 - 252", "HEA 1000 - 272")
	
	d = CreateUnoDialog(DialogLibraries.UltimusFree2.Dialog_tabellaferri)

  	Dim ListBox As Object
  	ComboBox=d.getControl("ComboBox1")
  	ComboBox.addItems(tabelle(), 0)

	ListBox=d.getControl("ListBox1")
	d.execute()

	Itab=ComboBox.Text

RIPRENDI:
	Select Case ComboBox.Text
	Case "Tondo per c.a."
		ListBox.removeItems(0, 100)
		ListBox.addItems(FerroTondo(), 0)
	Case "Profilati HEA"
		ListBox.removeItems(0, 100)
		ListBox.addItems(HEA(), 0)
	End Select
	d.execute()
	item = ListBox.SelectedItem
	If item ="" Then GoTo RIPRENDI:
End Sub
Il problema è che, dopo aver selezionato la tabella dalla combobox, perché sia visualizzata, devo per forza passare dal pulsante di OK. Quindi troppi click...
La soluzione di Gaetanopr farebbe al mio caso se non si poggiasse ai dati contenuti nelle celle.
In pratica il file di lavoro di LeenO è già per conto suo pieno di dati: aggiungerne altri (e di tabelle ce ne sono tante - es. http://www.oppo.it/tabelle/a_elenco_tabelle.html) significherebbe appesantire ancor più il template.
Preferirei rimanere esclusivamente sul lato macro.
Soluzioni?
Grazie ancora. Siete una risorsa indispensabile.
LibreOffice fresh su Windows e Linux
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: [risolto] Interazione tra ComboBox e ListBox

Messaggio da patel »

Non ho capito cosa vuoi, se non ti va bene la soluzione di Gaetano (veramente ottima) perché non usi l'altra ?
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Avatar utente
giuserpe
Messaggi: 127
Iscritto il: mercoledì 23 aprile 2014, 12:53

Re: [risolto] Interazione tra ComboBox e ListBox

Messaggio da giuserpe »

patel, mi piacerebbe che fosse gestito tutto solo ed esclusivamente via macro senza leggere i dati dai fogli. E cioè riempire la listbox solo via macro. La soluzione di Gaetano è quello che fa per me, ma dovrei tenere nel template di LeenO una nuova ulteriore sheet da dedicare a questa funzione. Il file di partenza del computo metrco "vuoto" pesa 230kb essendo dotato già di una sua infrastruttura. Non vorrei aggiungere ancora altri dati...
LibreOffice fresh su Windows e Linux
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: [risolto] Interazione tra ComboBox e ListBox

Messaggio da patel »

continuo a non capire, la mia soluzione non usa il foglio
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Avatar utente
giuserpe
Messaggi: 127
Iscritto il: mercoledì 23 aprile 2014, 12:53

Re: [risolto] Interazione tra ComboBox e ListBox

Messaggio da giuserpe »

patel ha scritto:continuo a non capire, la mia soluzione non usa il foglio
Sì, è vero, ma una volta scelta la voce nella ComboBox la Listbox non viene aggiornata al volo... non so se mi spiego.
Ripeto: tocca dare OK al Dialog per vedere la ListBox aggiornata, mentre con la soluzione di Gaetano l'aggiornamento è immediato.
LibreOffice fresh su Windows e Linux
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: [risolto] Interazione tra ComboBox e ListBox

Messaggio da Gaetanopr »

giuserpe ha scritto: Sì, è vero, ma una volta scelta la voce nella ComboBox la Listbox non viene aggiornata al volo... non so se mi spiego.
Ripeto: tocca dare OK al Dialog per vedere la ListBox aggiornata, mentre con la soluzione di Gaetano l'aggiornamento è immediato.
E' solo questione di impostazione della macro, devi scomporre la macro in due, la prima apre il dialog e carica la combobox la seconda invece riempe la listbox dopo aver effettuato la scelta, non puoi gestire questi due eventi con una sola macro
Ti riallego il file con la TUA macro modificata per funzionare in tal senso
Allegati
ListBox_Dinamica.ods
(13.55 KiB) Scaricato 328 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
giuserpe
Messaggi: 127
Iscritto il: mercoledì 23 aprile 2014, 12:53

Re: Interazione tra ComboBox e ListBox

Messaggio da giuserpe »

Gaetanopr, è perfatta!
Grazie
LibreOffice fresh su Windows e Linux
Rispondi