Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Caricare e Scaricare oggetti Dinamicamente

    ciao a tutti ragazzi....mi succede una cosa assurda....forse qualcuno di voi hai una idea???

    Allora questo è il mio problema:

    Ho sul form un oggetto che si chiama Form1.Giudizio_1Q_Alunno con index 500. Ho due funzioni nel mio programma, una che carica dinamicamente N di questi controlli ed una funzione che li scarica.

    Con questo codice inserito in un ciclo carico N di questi controlli:
    codice:
    Load Form1.Giudizio_1Q_Alunno(I)
    Form1.Giudizio_1Q_Alunno(I).Caption = RS_Servizio("cognome") & " " & RS_Servizio("nome")
    Form1.Giudizio_1Q_Alunno(I).Top = TOP_Testo
    Form1.Giudizio_1Q_Alunno(I).Visible = True
    TOP_Testo = TOP_Testo + 360
    TOP_Casella = TOP_Casella + 365
    Con questa funzione invece scarico i controlli e mi da un errore STRANISSIMO:
    codice:
    If Form1.Giudizio_1Q_Alunno.Count = 2 Then
    Unload Form1.Giudizio_1Q_Alunno(1)
    End If
    
    If Form1.Giudizio_1Q_Alunno.Count > 2 Then
    MsgBox Form1.Giudizio_1Q_Alunno.Count
    Form1.Giudizio_1Q_Alunno(I).Visible = False
        For I = 1 To (Form1.Giudizio_1Q_Alunno.Count - 2)
            Unload Form1.Giudizio_1Q_Alunno(I)
            DoEvents
        Next I
    End If
    Unload Form1.Giudizio_1Q_Alunno(1) Su Questa riga mi da errore e dice "Errore 365." "Impossibile scaricare in questo contesto"

    MA CHE CAVOLO VUOL DIRE???? Qualcuno mi sa aiutare?? Grazie!
    Paperina :-)

  2. #2
    Forse il problema è dovuto al fatto che mentre scarichi i controlli (quartultima riga del tuo codice) la proprietà Giudizio_1Q_Alunno.Count cambia ma il ciclo For non ne tiene conto, in quanto effettua la lettura del valore solo la prima volta. Dovresti risolvere utilizzando il ciclo For al contrario:
    codice:
    If Form1.Giudizio_1Q_Alunno.Count = 2 Then
        Unload Form1.Giudizio_1Q_Alunno(1)
    End If
    
    If Form1.Giudizio_1Q_Alunno.Count > 2 Then
        MsgBox Form1.Giudizio_1Q_Alunno.Count
        Form1.Giudizio_1Q_Alunno(I).Visible = False
        For I = (Form1.Giudizio_1Q_Alunno.Count - 2) To 1 Step -1
            Unload Form1.Giudizio_1Q_Alunno(I)
            DoEvents
        Next I
    End If
    Chi non cerca trova.

  3. #3
    No!! Non funziona

    Grazie della risposta, ma ma non funziona. E poi scusa:
    Il ciclo va dal primo all'ultimo indice dei controlli, anche se li cancello.
    BHO!!
    Paperina :-)

  4. #4
    Ma Giudizio_1Q_Alunno è un oggetto di che tipo? E' una tua classe?
    Chi non cerca trova.

  5. #5
    Ehm...hai ragione....ho dimenticato di Scriverlo. E' un Semplicissimo Label!!
    Paperina :-)

  6. #6
    Sono andato a vedere su MSDN le possibili cause di quell'errore (365) e a quanto pare non è possibile usare il metodo Unload in questi contesti:
    • nell'evento Paint del form o di un controllo del form
    • nell'evento Change, Click o DropDown di un ComboBox
    • nell'evento Scroll di un HScrollBar oppure VScrollBar
    • nell'evento Resize di un controllo Data, Form, FormMDI, PictureBox
    • nellevento RePosition e Validate di un controllo Data
    • nell'evento ObjectMove di un controllo OLE Container

    Tu dove hai inserito quel codice?
    Chi non cerca trova.

  7. #7
    Allora...GRDIO AIUTO ANCORA PIU FORTE dopo che ho passato una intera settimana a provare e riprovare ma NON funziona, e l'errore è semore quello.
    Rispiego la situazione:

    In un form ho un oggetto Labelw e vorrei caricarne dinamicamente degli altri in maniera dinamica. L'oggetto gia presente ha index 0.

    il codice con cui lo faccio è questo:

    codice:
    If I <> 0 Then
        Load Form1.Giudizio_1Q_Alunno(I)
    End If
        Form1.Giudizio_1Q_Alunno(I).Caption = RS_Servizio("cognome") & " " & RS_Servizio("nome")
        Form1.Giudizio_1Q_Alunno(I).Top = TOP_Testo
        Form1.Giudizio_1Q_Alunno(I).Visible = True
        Form1.Giudizio_1Q_Alunno(I).ZOrder 'Lo metto in promo piano
        TOP_Testo = TOP_Testo + 360
    e fin qui nessun problema.... il problema è nel momento in cui scarico i controlli.

    il codice con cui lo faccio è questo:

    codice:
    Form1.Giudizio_1Q_Alunno(0).Visible = True
    For I = 1 To Form1.Giudizio_1Q_Alunno.Count - 1
        Unload Form1.Giudizio_1Q_Alunno(I)
    Next I
    A questo punto mi dice "Impossibile scaricare in questo contesto, e mi da errore Errore 365.

    COME POSSO FARE??? Vi prego di Aiutarmi!!!

    Grazie!
    Paperina :-)

  8. #8
    Utente di HTML.it L'avatar di cik
    Registrato dal
    Jul 2003
    Messaggi
    449
    Visto l'ultimo messaggio di Tas dovresti dire anche quando scarichi i controlli.
    Magari sei in una di quelle situazioni
    S'i fosse foco, arderei 'l mondo

  9. #9
    Originariamente inviato da Paperina(l4p)
    ...
    A questo punto mi dice "Impossibile scaricare in questo contesto, e mi da errore Errore 365.

    COME POSSO FARE??? Vi prego di Aiutarmi!!!

    Grazie!
    Se l'errore te lo da su I = 0, sappi che il controllo Label(0) non puoi scaricarlo perchè esiste fisicamente.

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.