[Risolto] Pulsante Reset Campi Dialog
[Risolto] Pulsante Reset Campi Dialog
Ciao,
a qualcuno viene in mente come poter creare un ciclo che possa resettare tutti i campi txt e cbo in una finestra di dialogo?
Mi trovo a dover creare un pulsante reset, e siccome i campi sono molti, non trovo come fare a realizzare ciò che pensavo, ovvero eseguire una sorta di:
For Each txtField Or cboField in NomeDlg, Campo = ""
Spero di aver reso il concetto
Sto sbagliando strada?
Grazie mille
a qualcuno viene in mente come poter creare un ciclo che possa resettare tutti i campi txt e cbo in una finestra di dialogo?
Mi trovo a dover creare un pulsante reset, e siccome i campi sono molti, non trovo come fare a realizzare ciò che pensavo, ovvero eseguire una sorta di:
For Each txtField Or cboField in NomeDlg, Campo = ""
Spero di aver reso il concetto
Sto sbagliando strada?
Grazie mille
Ultima modifica di Biagio91 il lunedì 10 ottobre 2022, 16:52, modificato 1 volta in totale.
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
::::May we meet again into the matrix::::
Re: Pulsante Reset Campi Dialog
Per quanto riguarda i cbo tramite un ciclo for each puoi verificare se i controlli presenti nel Dialog supportano il servizio in questo modo
Invece per i textbox il discorso è diverso il servizio da loro supportato è lo stesso come per altri controlli tipo i numericField quindi viene più difficile raggrupparli, puoi usare il nome , cioè nominarli in maniera progressiva TextBox1, TextBox2 ect ect.
La macro potrebbe essere la seguente sia per i textbox che per i cbo
Codice: Seleziona tutto
"com.sun.star.awt.UnoControlComboBox"
Codice: Seleziona tutto
If ctrl.supportsService("com.sun.star.awt.UnoControlComboBox") then
ctrl.Text = ""
end if
La macro potrebbe essere la seguente sia per i textbox che per i cbo
Codice: Seleziona tutto
Dim ctrl As Object
Dim oControls
DialogLibraries.loadLibrary("Standard")
oDialog = CreateUnoDialog(DialogLibraries.getByName("Standard").getByName("Dialog1"))
oDialog.Execute()
...............
...............
for each ctrl in oDialog.getControls()
IF ctrl.Model.Name LIKE "TextBox*" Or ctrl.Model.Name LIKE "cbo*" THEN
ctrl.Text = ""
end if
next ctrl
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Pulsante Reset Campi Dialog
Mi andrebbe benissimo anche resettare TUTTI i campi, ho chiesto dei cbo e dei txt perché pensavo fosse più mirata come cosa visto che ho solo quelli nella dialog interessata; ma se esiste un comando per resettare tutti i campi contenuti in una finestra di dialogo ben venga, è proprio ciò che devo fare.
Mi pare di intuire qualcosa del genere
Corretto?
Grazie mille
Ciao
Mi pare di intuire qualcosa del genere
Codice: Seleziona tutto
Dim ctrl As Object
For each ctrl in oDialog.getControls()
ctrl.Text = ""
next ctrl
Grazie mille
Ciao
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
::::May we meet again into the matrix::::
Re: Pulsante Reset Campi Dialog
Basta provare, ma potresti avere problemi non è detto che tutti i controlli presenti nel Dialog abbiano la proprietà Text come i combo e le caselle di testo.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Pulsante Reset Campi Dialog
Ok, quindi teoricamente le combo e i text, che hanno la proprietà text, dovrebbero resettarsi tutti, corretto?
Ho provato, ma nella finestra di dialogo compilata in ogni campo (cbo+txt), sono spariti tutti i testi contenuti in tutti i campi txt e in tutti i campi etichetta.
per le combobox invece mi succede una cosa strana; ho 3 ComboBox , 2 delle quali si compilano tramite codice aggiungendo elementi, una invece prende il contenuto da un elenco inserito nelle sue proprietà, queste combobox appena citate, non si resettano. Stranamente però un'altra cbo presente nella stessa Dlg, che si compila da codice tramite aggiunta di elementi, si resetta completamente.
Non capisco come mai, dove sto sbagliando
Grazie mille
Ciao
Ho provato, ma nella finestra di dialogo compilata in ogni campo (cbo+txt), sono spariti tutti i testi contenuti in tutti i campi txt e in tutti i campi etichetta.
per le combobox invece mi succede una cosa strana; ho 3 ComboBox , 2 delle quali si compilano tramite codice aggiungendo elementi, una invece prende il contenuto da un elenco inserito nelle sue proprietà, queste combobox appena citate, non si resettano. Stranamente però un'altra cbo presente nella stessa Dlg, che si compila da codice tramite aggiunta di elementi, si resetta completamente.
Non capisco come mai, dove sto sbagliando
Grazie mille
Ciao
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
::::May we meet again into the matrix::::
Re: Pulsante Reset Campi Dialog
Hai fatto il controllo del nome come suggerito da Gaetano ?
Codice: Seleziona tutto
for each ctrl in oDialog.getControls()
IF ctrl.Model.Name LIKE "TextBox*" Or ctrl.Model.Name LIKE "cbo*" THEN
ctrl.Text = ""
end if
next ctrl
-------------------
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: Pulsante Reset Campi Dialog
No, non posso purtroppo lasciare il nome TextBox.
Sto facendo qualche test, domani penso riuscirò a dare riscontro.
Intanto grazie mille
Sto facendo qualche test, domani penso riuscirò a dare riscontro.
Intanto grazie mille
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
::::May we meet again into the matrix::::
Re: Pulsante Reset Campi Dialog
Ok, quindi qui potrei risolvere con la soluzione removeItems suggerita al post:
viewtopic.php?t=11846
Vorrei procedere come segue
ma sto sbagliando a impostare l'Array in qualche modo sto cercando info ma non riesco a concludere questa storia, un aiutino?
Grazie mille
viewtopic.php?t=11846
Vorrei procedere come segue
Codice: Seleziona tutto
Dim cboNome, cboCognome, cboAnnoAs, oDialog, oListBox Object
Dim CampiDiTipoComboBox As Variant
Dim nCampiDiTipoComboBox, nCount As Integer
CampiDiTipoComboBox = Array (cboNome, cboCognome, cboAnno) 'ecc...
nCampiDiTipoComboBox = CampiDiTipoComboBox.Count
For i = 0 To nCampiDiTipoComboBox
oListBox = oDialog.GetControlByIndex(i)
nCount = oListBox.getItemCount()
oListBox.removeItems( 0, nCount )
Next
Grazie mille
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
::::May we meet again into the matrix::::
Re: Pulsante Reset Campi Dialog
Non posso fare prove ma noto due errori.
1) Nel ciclo for, correggilo in questo modo altrimenti come hai fatto tu ma togliendo 1 in quanto l'array è a base zero quindi tre elementi sono 0-1-2, usando count fai un ciclo da 0 a 3.
2) oListBox = oDialog.GetControlByIndex(i) in questo modo non richiami i controlli presenti nell'array, cambia cosìPer il resto credo non ci siano errori.
1) Nel ciclo for, correggilo in questo modo
Codice: Seleziona tutto
For i = 0 To Ubound ( CampiDiTipoComboBox)
2) oListBox = oDialog.GetControlByIndex(i) in questo modo non richiami i controlli presenti nell'array, cambia così
Codice: Seleziona tutto
oDialog.GetControl(i)
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Pulsante Reset Campi Dialog
Ciao,
grazie mille, c'è qualcosa che non va non riesco a capire:
Mi sembra che non si colleghi l'indice con l'elemento dell'Array
Grazie mille
Ciao
grazie mille, c'è qualcosa che non va non riesco a capire:
Codice: Seleziona tutto
Dim cboNome, cboCognome, cboAnnoAs, oListBox Object
Dim CampiDiTipoComboBox As Variant
Dim nCampiDiTipoComboBox, nCount As Integer
cboCognome = oDialog.GetControl("Cognome")
cboNome = oDialog.GetControl("Nome")
cboAnno = oDialog.GetControl("Anno")
CampiDiTipoComboBox = Array (cboNome, cboCognome, cboAnno) 'ecc...
For i = 0 To Ubound(CampiDiTipoComboBox)
oListBox = oDialog.GetControl(i)
nCount = oListBox.getItemCount()
oListBox.removeItems( 0, nCount)
Next
ErrorHandler:
msgBox Err
End Sub
Grazie mille
Ciao
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
::::May we meet again into the matrix::::
Re: Pulsante Reset Campi Dialog
Così andiamo a tentoni, ti ho detto che non posso fare prove senza file, se crei un esempio possiamo vedere cosa non funziona.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Pulsante Reset Campi Dialog
Ciao,
File preparato; presumo che il mio problema sia proprio nella costruzione del ciclo for next con l'utilizzo di valori presi da un intervallo.
File preparato; presumo che il mio problema sia proprio nella costruzione del ciclo for next con l'utilizzo di valori presi da un intervallo.
- Allegati
-
- SvuotaComboBox.ods
- (11.58 KiB) Scaricato 28 volte
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
::::May we meet again into the matrix::::
Re: Pulsante Reset Campi Dialog
Cambia la macro così
Codice: Seleziona tutto
CampiDiTipoComboBox = Array ("Cognome", "Nome", "Anno") 'ecc...
'nCampiDiTipoComboBox = CampiDiTipoComboBox.Count
uCampiDiTipoComboBox = Ubound(CampiDiTipoComboBox)
PRINT uCampiDiTipoComboBox
For i = 0 To uCampiDiTipoComboBox
oListBox = oDialog.GetControl(CampiDiTipoComboBox(i))
nCount = oListBox.getItemCount()
oListBox.removeItems( 0, nCount )
Next
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Pulsante Reset Campi Dialog
Funziona,
ho visto dove sbagliavo, oltre alla ripetizione dell'oggetto del campo, mancava una parte fondamentale per correlare l'indice all'array, ovvero
Grazie mille per l'aiuto
Ciao
ho visto dove sbagliavo, oltre alla ripetizione dell'oggetto del campo, mancava una parte fondamentale per correlare l'indice all'array, ovvero
Codice: Seleziona tutto
oListBox = oDialog.GetControl(CampiDiTipoComboBox(i))
Ciao
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
::::May we meet again into the matrix::::
Re: Pulsante Reset Campi Dialog
Bravo, esatto, nel mio messaggio precedente frettolosamente mi era sfuggito.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10