Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197

    [vb6]array di controlli

    ho trascinato all'interno di una form un checkbox poi ho
    fatto copia e incolla e mi ha chiesto se volevo un
    controllo array, ho chiesto di si

    nel codice faccio

    redim chkMiocheckbox(10)

    quano tento di posizionare ogni singolo elemento
    dell'array mi dice "Object Required"...

    chkMiocheckbox(0).top = 100
    chkMiocheckbox(0).left = 100
    chkMiocheckbox(1).top = 300
    chkMiocheckbox(1).left = 100
    chkMiocheckbox(2).top = 500
    chkMiocheckbox(2).left = 100

  2. #2
    togli questa riga redim chkMiocheckbox(10)

    così come hai scritto tu fai riferimento ad una variabile e non ad un oggetto.
    l'array di controlli lo hai già sul form, l'hai disegnati tu!
    se non l' hai fatto puoi:
    - crearti tutti i controlli direttamente in fase di progettazione
    - creare un array di controlli in fase di esecuzione

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

  3. #3
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    non so a priori di quanti elementi deve essere, come faccio a ridimensionarlo a runtime?

  4. #4
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    I controlli che hai creato occupano un vettore che non puoi ridimensionare!
    Li hai già creati tutti in fase di progettazione!

    Se il loro numero deve essere dipendente da qualcosa, come ha detto ladyblu, li crei a run-time!

  5. #5
    Un modo per creare matrici di controlli in esecuzione cè e nessuno vieta di ridimensionare la matrice in esecuzione.

    puoi fare così:

    prima di tutto ti crei l'oggetto di cui vuoi fare la matrice. Poi modifica la proprietà index dell'oggetto e portala a 0 in modo che quello diventerà il primo oggetto della matrice.

    dopodichè quando vuoi creare nuove matrici del controllo devi fare così:
    ---------------------------------------------
    Load oggetto(1)
    oggetto(1).move 'e qui metti la posizione
    oggetto(1).visible = true
    ---------------------------------------------

    a questo punto in esecuzione verrà creata una nuova matrice del controllo oggetto chiamata oggetto(1).

    Mettendoci un bel loop potresti creare quante matrici vuoi.

    ciao ciao
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

  6. #6
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    Originariamente inviato da I'mtheleader
    Un modo per creare matrici di controlli in esecuzione cè e nessuno vieta di ridimensionare la matrice in esecuzione.

    puoi fare così:

    prima di tutto ti crei l'oggetto di cui vuoi fare la matrice. Poi modifica la proprietà index dell'oggetto e portala a 0 in modo che quello diventerà il primo oggetto della matrice.

    dopodichè quando vuoi creare nuove matrici del controllo devi fare così:
    ---------------------------------------------
    Load oggetto(1)
    oggetto(1).move 'e qui metti la posizione
    oggetto(1).visible = true
    ---------------------------------------------

    a questo punto in esecuzione verrà creata una nuova matrice del controllo oggetto chiamata oggetto(1).

    Mettendoci un bel loop potresti creare quante matrici vuoi.

    ciao ciao
    scusa l'ignoranza, ma quando faccio load Oggetto(1) "oggetto" presumo sia il nome della "classe" del controllo che devo caricare, non devo in qualche modo assegnargli anche un nome in modo che poi possa farci riferimento all'interno del codice?

  7. #7
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    perfetto avevo fatto un po di confuzione, ho risolto grazie!

  8. #8
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    mi sorge un dubbio, i controlli creati a runtime, vengono distrutti automaticamente alla chiusura del form o bisogna eliminarli dalla memoria a mano? se è vera la seconda affermazione come eliminarli?

  9. #9
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Non saprei, ma credo che VB6 non abbia il "garbage collector"

    Per eliminarli a mano fai:
    codice:
    Set NomeOggetto = Nothing

  10. #10
    Direttamente allo scaricamneto del form tutte le istanze di una classe vengono distrutte.

    ciao ciao :metallica
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

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.