Newsgroup: it.comp.lang.visual-basic
Titolo: SONO DISPERATO: EXE che si pianta

Non riesco a capire quale possa essere il mio problema, visto che non è la
prima volta che faccio un'operazione del genere.
Da un mio progetto vado ad eseguire un mio form (è la riproduzione dell'
INPUTBOX in cui però ho sostituito un combobox al text box). Sul pulsante OK
e Annulla del form vi è alla fine l'istruzione "unload me" e nell'evento
unload del form l'istruzione "set <nome form> = nothing". Se eseguo il mio
programma dall'ambiente di sviluppo va tutto bene, ma se compilo
l'eseguibile e quindi lo "faccio partire", quando premo si OK che Annulla mi
pianta l'applicazione. Da cosa può dipendere?
Grazie,
Simone
funzione chiamante:
Public Function MyInput(Prompt As String, Vett() As String, NVett As Long,
Optional Title As String, Optional Default As String) As String
Dim Indice As Long
    frmMyInput.txtMyInput = Default
    frmMyInput.Caption = Title
    frmMyInput.lblMyInput = Prompt
    If NVett > 0 Then
        For Indice = 1 To NVett
            frmMyInput.txtMyInput.AddItem Vett(Indice)
        Next
        frmMyInput.txtMyInput.text = frmMyInput.txtMyInput.List(0)
    End If
    frmMyInput.Show vbModal
    MyInput = Pass
End Function
codice del form:
Option Explicit
Private Sub CancelButton_Click()
    Unload Me
End Sub
Private Sub Form_Activate()
    txtMyInput.SelStart = 0
    txtMyInput.SelLength = Len(txtMyInput.text)
    txtMyInput.SetFocus
    Pass = "@#*"
End Sub
Private Sub Form_Unload(Cancel As Integer)
    Set frmMyInput = Nothing
End Sub
Private Sub OKButton_Click()
'    Pass = txt MyInput.text
    Unload Me
End Sub

Attenzione !!!!
Unload me è un assurdo in termini ......
il programma si blocca perchè non trova nessuna istruzione da eseguire dopo
l'Unload, tieni presente che dopo la sua esecuzione in teoria (e pratica)
hai rimosso anche il codice successivo.
utilizza unload nome_form nella stessa routine che chiama quel form
e nei pulsanti metti semplicemente hide :
funzione chiamante:
        Public Function MyInput(Prompt As String, Vett() As String, _
                                          NVett As Long, Optional Title As
String, _
                                            Optional Default As String) As
String
        Dim Indice As Long
            frmMyInput.txtMyInput = Default
            frmMyInput.Caption = Title
            frmMyInput.lblMyInput = Prompt
            If NVett > 0 Then
                For Indice = 1 To NVett
                    frmMyInput.txtMyInput.AddItem Vett(Indice)
                Next
                frmMyInput.txtMyInput.text = frmMyInput.txtMyInput.List(0)
            End If
            frmMyInput.Show vbModal
!>        Unload frmMyInput
!>        frmMyInput = Nothing
            MyInput = Pass
        End Function
codice del form:
        Option Explicit
        Private Sub CancelButton_Click()
!>         Hide
        End Sub
        Private Sub Form_Activate()
            txtMyInput.SelStart = 0
            txtMyInput.SelLength = Len(txtMyInput.text)
            txtMyInput.SetFocus
            Pass = "@#*"
        End Sub
        Private Sub OKButton_Click()
            Pass = txt MyInput.text
!>        Hide
        End Sub
Saluti by MAX



 prima volta che faccio un'operazione del genere.
....................