Newsgroup: it.comp.lang.visual-basic
Titolo: [?] E' possibile copiare o creare oggetti da codice ?

Mi spiego meglio il mio programma fa uso di un certo numero di Label per
evitare di "parcheggiarne" N all'interno del Form, chiedevo se era possibile
inserirne una e le altre copiarle o generarle a secondo dell'esigenza del
momento.
Grazie a tutti
Saluti Corrado

 wrote in message
7llbk2$ffk$1...@hermes.iol.it...


 momento.
Se imposti la proprietà index dell' istanza 'parcheggiata' sul form a 0,
puoi creare a run-time tutte le copie che vuoi.
Es:
Crei un istanza di una label sul Form
Label1.index=0
Da codice potresti fare:
Load label1(label1.count)
In questo modo crei una copia di Label1(0). Nota che la label appena creata
sarà invisibile quindi dovrai impostare la sua proprietà visible a true per
vederla.
Per scaricarla invece usi Unload:
Unload label1(Numero_della_label_da_scaricare)
Una Matrice di controlli permette anche di gestire meglio gli eventi:
ipotizziamo che tu hai una matrice di 100 elementi Label e che ogni volta
che clicchi su una label vuoi che appaia una messagbox con il numero di
label cliccata.
Senza matrice dovresti scrivere il codice per visualizzare la msgbox dentro
i cento eventi delle cento label.
Con una matrice di controlli invece puoi fare così:
Private sub label1_click(index as integer)
    msgbox index
end sub
Il parametro index ti indica quale elemento della matrice di controlli ha
causato l'evento.
Spero di esserti stato di aiuto
Ciao
Daniele
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------

Saluti Corrado
Il VB6 lo fa..... il 5 non mi risulta............ ma potrei sbagliarmi.
Ciao.



Grazie mille e' perfetto io ho dovuto aggiungere anche
"Label.Item(Index).ZOrder 0"
perche' le label sono su una Picture e quindi li devo portare in primo
piano.
Ti ringrazio ancora spero di contraccambiare.
Saluti Corrado Chezzi

...e non solo: in VB6 è ora possibile creare dinamicamente i vari controlli
di una form
prova il seguente codice
Option Explicit
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single,
Y As Single)
    If (Button And &H1) Then
        Crea
    ElseIf (Button And &H2) Then
        Distruggi
    End If
End Sub
Private Sub Crea()
    Dim i As Integer
    Dim Y As Long
    Dim ctrl As Control
    Y = 0
    For i = 1 To 5
        Set ctrl = Me.Controls.Add("VB.Label", "Label" & i)
        With ctrl
            .AutoSize = True
            .Caption = "Label" & i
            .Visible = True
            .ZOrder
            .Move 0, Y
            Y = Y + .Height
        End With
    Next i
End Sub
Private Sub Distruggi()
    Dim i As Integer
    Dim ctrl As Control
    For i = 1 To 5
        Set ctrl = Me.Controls("Label" & i)
        ctrl.Visible = False
        Me.Controls.Remove ctrl
    Next i
End Sub
facendo click col tasto sinistro del mouse vedrai la form riempirsi di 5
nuove label, facendo click col pulsante destro vedrai le 5 label "sparire"
(il programma non ha nessun tipo di controllo su quali pulsanti vengono
premuti e in che ordine.... se fai click 2 volte col destro o col sinistro
oppure se provi a distruggere i controlli prima di averli creati otterrai un
runtime error...)
p.s.: l'help relativo ai suggerimenti dei metodi "Add" e "Remove" della
property "Controls" ha un bug....