Salve a tutti
dopo varie prove sono ancora quà
mi spiego:
su di un foglio(mettiamo foglio1) faccio apparire una finestra di dialogo
con due pulsanti
uno per chiudere l' applicazione e uno per far sparire la suddetta finestra
spostarmi sul foglio2 e far apparire una seconda dialog
questa con un pulsante per chiudere la seconda dialog tornare al foglio1
e riapparire la prima dialog
vi aggiungo il codice
REM ***** BASIC *****
rem Inserire 2 dialog
rem
rem nella Dialog1 mettere due bottoni
rem cambiare nelle proprietà del bottone 1
rem il nome in button1 e il tipo di pulsante in OK
rem cambiare nelle proprietà del bottone 2
rem il nome in button2 e negli eventi assegnare
rem al tasto del mouse premuto o rilasciato la
rem macro Prova2()
rem
rem nella Dialog2 mettere un bottone
rem come sopra cambiare il nome in button3
rem e il tipo di pulsante in Ok
dim oDialog as object
dim oDialog1 as object
sub Main()
Prova1()
end sub
sub Prova1()
dim iResult as integer
dim Documento as object
Documento = ThisComponent
DialogLibraries.LoadLibrary( "Standard" )
oDialog = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )
With oDialog
Set oButton1 = .getControl("button1")
Set oButton2 = .getControl("button2")
End With
iResult = oDialog.Execute()
if iResult = 1 then Documento.close(True)
End Sub
sub Prova2()
dim iresult as integer
oDialog.setvisible(False)
rem oDialog.endExecute()
Sposta(1)
DialogLibraries.LoadLibrary( "Standard" )
oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog2 )
With oDialog1
Set oButton3 = .GetControl("button3")
End With
iresult = oDialog1.Execute()
if iresult = 1 then prova3()
end sub
sub Prova3()
Sposta(0)
rem Prova1()
oDialog.setvisible(True)
end sub
sub Sposta(Numero)
dim Tabella As Integer
dim Documento As object
dim Foglio As object
Tabella = Numero
Documento = ThisComponent
Foglio = ThisComponent.Sheets.getByIndex(Tabella)
Documento.CurrentController.SetActiveSheet(Foglio)
end sub
se si usa endExecute(), la linea commentata in Prova2(), per
chiudere la prima dialog alla chiusura dell' applicazione
da il solito errore
Errore di Runtime basic
An exception occurred
Type:com.sun.star.util.CloseVetoException
Message:controller disagree....
allora ho provato a non chiudere la dialog1 ma a renderla invisibile
a questo punto tutto ha funzionato alla perfezione
domanda
ma endExecute() non dovrebbe chiudere definitivamente una dialog?
il problema sembrerebbe risolto, ma se ne potrebbe ripresentare un' altro
immaginate che un utente un pò maldestro dovesse chiudere la seconda dialog
con il pulsante sulla barra, quello con la x per intenderci
si troverebbe l' applicazione bloccata da una dialog invisibile
io ho dovuto chiudere il tutto con kill (per gli utenti non linuxiani, kill è
un comando per chiudere drasticamente un' applicazione)
chiedo esiste un metodo per chiudere una finestra di dialogo che non vada
in conflitto con Close() ?
perchè a questo punto mi sembra di capire che se c' è stato in "esecuzione" un
endExecute() non si può chiudere un' applicazione con un pulsante da
una finestra di dialogo
scusatemi se sono stato troppo lungo
saluti Lido
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]