Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Aspettare che finisca una function

Salve
Ho gia fatto una domanda simile, solo che prima dovevo aspettare il
termine dell'esecuzione di un file exe, mentre ora devo aspettare il
termine dell'esecuzione di una function. Come fare? 
'Modulo BAS
Public Function CopiaDir(Origine As String, Destinazione As String) As
Integer
Dim pstrDirectory() As String, pstrFile() As String, pstrAgg As String
Dim pstrPercorso As String, pstrNome As String
Dim plngNumDir As Long, plngNumFile As Long, plngCont As Long
'Sistema le eventuali imperfezione nei percorsi
If Right(Origine, 1) <> "\" Then Origine = Origine & "\"
If Right(Destinazione, 1) <> "\" Then Destinazione = Destinazione &
"\"
'Se non esiste crea la dir di destinazione
If Dir(Destinazione, vbDirectory) = "" Then
MkDir Destinazione
End If
'Inizializza le variabili
pstrPercorso = Origine
'Corpo della routine
Scannerizza:
If Right(pstrPercorso, 1) <> "\" Then pstrPercorso = pstrPercorso &
"\"
pstrNome = Dir(pstrPercorso, vbDirectory)
Do While pstrNome <> ""
     If pstrNome <> "." And pstrNome <> ".." Then
        If (GetAttr(pstrPercorso & pstrNome) And vbDirectory) =
vbDirectory Then
         plngNumDir = plngNumDir + 1
         ReDim Preserve pstrDirectory(plngNumDir)
         pstrDirectory(plngNumDir) = pstrAgg & pstrNome
        Else
         plngNumFile = plngNumFile + 1
         ReDim Preserve pstrFile(plngNumFile)
         pstrFile(plngNumFile) = pstrAgg & pstrNome
        End If
   End If
   pstrNome = Dir
Loop
'Esamina le sotto-directory
If plngCont < plngNumDir Then
    plngCont = plngCont + 1
    pstrPercorso = Origine & pstrDirectory(plngCont)
    pstrAgg = pstrDirectory(plngCont) & "\"
    GoTo Scannerizza
End If
'Crea la struttura delle direcory
'nel cassetto destinazione
For plngNumDir = 1 To UBound(pstrDirectory)
    pstrNome = Destinazione & pstrDirectory(plngNumDir)
    'crea la directory solo se non esiste
    If Dir(pstrNome, vbDirectory) = "" Then
        MkDir pstrNome
    End If
Next plngNumDir
'Copia i file
For plngNumFile = 1 To UBound(pstrFile)
FileCopy Origine & pstrFile(plngNumFile), Destinazione &
pstrFile(plngNumFile)
Next plngNumFile
CopiaDir = 1
End Function
'FORM1
Private Sub Command1_Click()
    Sorgente = CurDir() & "\Files\"
    Percorso = Text1.Text
    Form4.Visible = True
    Unload Me
End Sub
'FORM4
Private Sub Form_Load()
    Dim a As Integer
    a = CopiaDir(Sorgente, Percorso)
 
    If a = 1 Then
        MsgBox "Copia terminata correttamente."
        Unload Form4
    End If
End Sub
Io ho provato cosě, ma  non mi visualizza nemmeno il form 4 (c'č
scritto "COPIA IN CORSO" ) e apre direttamente il messaggio Copia
terminata ?
Grazie in anticipo.
ByeZ!
Alkondor
Togliere NOSPAM per rispondere in e-mail

 End Sub
Credo che dipenda dal fatto che La msgbox "Copia Terminata" e nel Form_Load.
Prova ad aggiungere questa linea di codice:
Me.show
dopo la sezione dichiarazioni della routine Form_Load e prima del richiamo
della funzione.
 Private Sub Form_Load()
     Dim a As Integer
    me.show
    'in caso non funzionasse aggiungi anche
    'Doevents
     a = CopiaDir(Sorgente, Percorso)
     If a = 1 Then
         MsgBox "Copia terminata correttamente."
         Unload Form4
     End If
 End Sub
Ciao
Daniele
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        Le risposte alle tue domande le puoi trovare su:
 
http://www.murialdo.it/it_lang_vb
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


  In FORM1 prova a lanciare il FORM4 in modalita' 'a scelta obbligata',
i.e.:
                          FORM4.Show 1
  ... funge?
falco