[Risolto] Interazione tra ComboBox e ListBox
[Risolto] Interazione tra ComboBox e ListBox
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
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
Motivazione: Aggiunto segno di spunta verde
LibreOffice fresh su Windows e Linux
Re: Interazione tra ComboBox e ListBox
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
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
Re: Interazione tra ComboBox e ListBox
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
Openoffice 4.1.13 su windows 10
Re: Interazione tra ComboBox e ListBox
Non suo come ringraziarvi...
Giuseppe
Giuseppe
LibreOffice fresh su Windows e Linux
Re: [risolto] Interazione tra ComboBox e ListBox
Ho risolto in maniera non definitiva con il codice qui di seguito:
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.
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 SubLa 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
Re: [risolto] Interazione tra ComboBox e ListBox
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
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
Re: [risolto] Interazione tra ComboBox e ListBox
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
Re: [risolto] Interazione tra ComboBox e ListBox
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
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
Re: [risolto] Interazione tra ComboBox e ListBox
Sì, è vero, ma una volta scelta la voce nella ComboBox la Listbox non viene aggiornata al volo... non so se mi spiego.patel ha scritto:continuo a non capire, la mia soluzione non usa il foglio
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
Re: [risolto] Interazione tra ComboBox e ListBox
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 macrogiuserpe 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.
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
Openoffice 4.1.13 su windows 10
Re: Interazione tra ComboBox e ListBox
Gaetanopr, è perfatta!
Grazie
Grazie
LibreOffice fresh su Windows e Linux

