RISOLTO Finetra di dialogo non modale

Creare una macro - Scrivere uno script - Usare le API
Rispondi
gino62
Messaggi: 81
Iscritto il: giovedì 26 dicembre 2013, 18:39

RISOLTO Finetra di dialogo non modale

Messaggio da gino62 »

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
Allegati
FinestraDialogoNonModalePosizione.odt
(13.14 KiB) Scaricato 85 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
geovign
Messaggi: 217
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

Re: Finetra di dialogo non modale

Messaggio da geovign »

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 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
oppure inserire dopo oDialogControl.setModel( oDialogModel ) questa riga

Codice: Seleziona tutto

oDialogControl.setPosSize(100,300, , ,com.sun.star.awt.PosSize.POS) 'x=100,y=300,w="",h=""  
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
LibO 7 su LinuxMint 21
gino62
Messaggi: 81
Iscritto il: giovedì 26 dicembre 2013, 18:39

Re: Finetra di dialogo non modale

Messaggio da gino62 »

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 ...
LibreOffice 3.5.4.2
Debian /.3 wheezy
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: RISOLTO Finetra di dialogo non modale

Messaggio da charlie »

Sistema corretto per aggiungere [Risolto] viewtopic.php?f=2&t=5661
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Rispondi