Buon Natale a tutti.
Ho un problema con le finestre di dialogo non modali.
Allego un file in cui è spiegato dettagliatamente il problema.
Non riesco a modificare la posizione, se lo faccio step to step la routine modifica la posizione, altrimenti no.
Modificando la sub non riesco più a chiudere la finestra.
Grazie e buone feste
RISOLTO Finetra di dialogo non modale
RISOLTO Finetra di dialogo non modale
- Allegati
-
- FinestraDialogoNonModalePosizione.odt
- (13.14 KiB) Scaricato 106 volte
Ultima modifica di gino62 il mercoledì 29 dicembre 2021, 19:25, modificato 1 volta in totale.
LibreOffice 3.5.4.2
Debian /.3 wheezy
Debian /.3 wheezy
Re: Finetra di dialogo non modale
Ciao @gino62
provo a risponderti io, per quanto possibile ed in base alle mie conoscenze.
- Posizione finestra
Non ho riscontrato il problema da te segnalato. Alla modifica delle coordinate x e y, corrisponde una posizione diversa della finestra. Per quanto ne so, l'istruzione oDialogControl.Execute() non influisce sulla posizione della finestra...
In alternativa poi provare ad usareoppure inserire dopo oDialogControl.setModel( oDialogModel ) questa riga
che modifica le sole coordinate x e y della finestra.
- Chiusura finestra con "x" nella barra del titolo
Il pulsante "x" nella barra del titolo è attivo solamente nelle finestre modali; nelle finestre non modali è disattivato e credo non attivabile.
- Errore nella chiusura della finestra abbinata a Sub FinestraDialogoNonModale2
Nel tuo caso specifico hai dichiarato la variabile oDialogControl come Private e pertanto al termine della Sub FinestraDialogoNonModale2, detta variabile cessa di vivere. Quando chiami la Sub NomeTasto2_actionPerformed( oEvent ) , con la pressione del pulsante presente in finestra, l'oggetto oDialogControl non è più definito quindi ti evidenzia l'errore. Per ovviare a ciò devi dichiarare la variabile oDialogControl come Global.
- Finestre modali
Le finestre modali si eseguono con .Execute() e si chiudono sempre con .endExecute() . Preferibilmente create con Basic IDE.
Le finestre modali non consentono nessun'altra azione del programma fino alla loro chiusura (sospendono l'esecuzione della macro). Alla chiusura della finestra, la macro riprende fino al naturale termine. Le variabili definite nella macro (siano esse locali o private) sono ancora utilizzabili dopo la chiusura della finestra.
- Finestre non modali
Le finestre non modali si visualizzano con .setVisible(True) e si chiudono sempre con .setVisible(False). Si possono creare anche con codice.
Le finestre non modali non sospendono la macro e sono utilizzabili solamente al suo termine. Le variabili definite nella macro sono utilizzabili solamente se dichiarate Global.
Scusate la lungaggine nella spiegazione...
Auguri a tutti
Geo
provo a risponderti io, per quanto possibile ed in base alle mie conoscenze.
- Posizione finestra
Non ho riscontrato il problema da te segnalato. Alla modifica delle coordinate x e y, corrisponde una posizione diversa della finestra. Per quanto ne so, l'istruzione oDialogControl.Execute() non influisce sulla posizione della finestra...
In alternativa poi provare ad usare
Codice: Seleziona tutto
With oDialogModel
.setPropertyValue("PositionX",100)
.setPropertyValue("PositionY",300)
.setPropertyValue("Width",120)
.setPropertyValue("Height",120)
.setPropertyValue("Title","Titolo della finestra di dialogo")
.setPropertyValue("Name","NomeFinestra1")
.setPropertyValue("DesktopAsParent",True)
End With
Codice: Seleziona tutto
oDialogControl.setPosSize(100,300, , ,com.sun.star.awt.PosSize.POS) 'x=100,y=300,w="",h=""
- Chiusura finestra con "x" nella barra del titolo
Il pulsante "x" nella barra del titolo è attivo solamente nelle finestre modali; nelle finestre non modali è disattivato e credo non attivabile.
- Errore nella chiusura della finestra abbinata a Sub FinestraDialogoNonModale2
Nel tuo caso specifico hai dichiarato la variabile oDialogControl come Private e pertanto al termine della Sub FinestraDialogoNonModale2, detta variabile cessa di vivere. Quando chiami la Sub NomeTasto2_actionPerformed( oEvent ) , con la pressione del pulsante presente in finestra, l'oggetto oDialogControl non è più definito quindi ti evidenzia l'errore. Per ovviare a ciò devi dichiarare la variabile oDialogControl come Global.
- Finestre modali
Le finestre modali si eseguono con .Execute() e si chiudono sempre con .endExecute() . Preferibilmente create con Basic IDE.
Le finestre modali non consentono nessun'altra azione del programma fino alla loro chiusura (sospendono l'esecuzione della macro). Alla chiusura della finestra, la macro riprende fino al naturale termine. Le variabili definite nella macro (siano esse locali o private) sono ancora utilizzabili dopo la chiusura della finestra.
- Finestre non modali
Le finestre non modali si visualizzano con .setVisible(True) e si chiudono sempre con .setVisible(False). Si possono creare anche con codice.
Le finestre non modali non sospendono la macro e sono utilizzabili solamente al suo termine. Le variabili definite nella macro sono utilizzabili solamente se dichiarate Global.
Scusate la lungaggine nella spiegazione...
Auguri a tutti
Geo
LibO v.24 su Manjaro
Re: Finetra di dialogo non modale
Grazie Geo della risposta.
Uso LibreOffice 7.0.4.2 su Debian 11 (bullseye).
Con le istruzioni alterative (ambedue) non è cambiato nulla.
Per quanto riguarda l’errore SubFinestraDialogoNonModale2 è proprio come hai spiegato: con la dichiarazione Global tutto funziona … credevo che le variabili private fossero disponibili in tutto il modulo (in tutte le sub del modulo).
Grazie per le spiegazioni.
… ricambio gli auguri a tutti voi.
Metto Risolto perchè l'errore non è comune, non dipende da libreoffice ...
Uso LibreOffice 7.0.4.2 su Debian 11 (bullseye).
Con le istruzioni alterative (ambedue) non è cambiato nulla.
Per quanto riguarda l’errore SubFinestraDialogoNonModale2 è proprio come hai spiegato: con la dichiarazione Global tutto funziona … credevo che le variabili private fossero disponibili in tutto il modulo (in tutte le sub del modulo).
Grazie per le spiegazioni.
… ricambio gli auguri a tutti voi.
Metto Risolto perchè l'errore non è comune, non dipende da libreoffice ...
LibreOffice 3.5.4.2
Debian /.3 wheezy
Debian /.3 wheezy
Re: RISOLTO Finetra di dialogo non modale
Sistema corretto per aggiungere ✔ [Risolto] viewtopic.php?f=2&t=5661
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org