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]

Rispondere a