Newsgroup: it.comp.lang.visual-basic
Titolo: Creazione di un oggetto

Ciao a tutti, come si fa ad aggiungere un controllo tipo una Text Box o una
Label in una form, in fase di esecuzione di un programma?
Se questa Label la volessi aggiungere ad un controllo nel senso che a
seconda del valore di una proprietą, mi crea numero x di Label, si procede
nello stesso modo?

Ti allego un programma 'studio' che una volta avevo fatto! Basta che crei un
Form frmMain vuoto...e ci metti questa sub:
Sub Main_Controll()
    'dichiarazione (si può anche dimensionare a più dimensioni)
    'limite controlli contemporaneamente su schermo circa 1700 in fase di
test
    Dim Txt(10)
    Dim Lbl(10)
    Dim Lbl2(10, 5)
    For c = 0 To 10
        '            nomeform                 tipo
nome_controllo_nel_form
        Set Txt(c) = frmMain.Controls.Add("VB.TextBox", "txt" +
Trim(Str$(c)))
        Set Lbl(c) = frmMain.Controls.Add("VB.Label", "lbl" + Trim(Str$(c)))
        For ck = 0 To 4
            Set Lbl2(c, ck) = frmMain.Controls.Add("VB.Label", "lbl2" +
Trim(Str$(c)) + Trim(Str$(ck)))
        Next ck
    Next c
    'uso
    For c = 0 To 9
        'si possono usare tutte le proprietà e i metodi del vero controllo
        With Txt(c)
             .Visible = True
             .Top = 0
             .Left = 0 + c * 400
             .Height = 200
             .Width = 400
             .Text = Trim(Str$(c))
        End With
        'modo 1
        With Lbl(c)
             .Visible = True
             .Top = 400
             .Left = 0 + c * 400
             .Height = 300
             .Width = 400
             .Caption = Trim(Str$(c))
             .BorderStyle = 1
             .ForeColor = vbYellow
             .BackColor = c * 20
        End With
        'modo 2
        For ck = 0 To 4
            With Lbl2(c, ck)
                 .Visible = True
                 .Top = 800 + ck * 400
                 .Left = 0 + c * 400
                 .Height = 300
                 .Width = 400
                 .Caption = Trim(Str$(c))
                 .BorderStyle = 1
                 .ForeColor = vbYellow
                 .BackColor = c * ck * 1000
            End With
        Next ck
    Next c
    'mandare a video solo alla fine per evitare problemi di sfarfallamento
    frmMain.Show
End Sub
Gianni Moretti

 wrote in message
960rbs$9qs$1...@nreadB.inwind.it...


Tu hai Vb5, e non ha il metodo Add
Salve
            Dbg
Fabio ha scritto nel messaggio


 wrote in message
50Og6.21826$GM6.1...@news.infostrada.it...


In Vb5 devi usare la funzione Load, che pero' richiede il controllo sia a
matrice e che almeno un item del controllo sia presente sul form.
Ti tocca modifcare la parte che crea il controllo.
Salve
                Dbg
Fabio ha scritto nel messaggio



Ma la funzione load non serve per caricare delle form senza visualizzarle?
PS: ammetto di non essere espertissimo
--
--
Dave79
e-mail 
Vent...@jumpy.it

PS: Load e premi F1.
Salve
                Dbg
--------------------------------
VERSION 5.00
Begin VB.Form Form1
   Caption         =   "Form1"
   ClientHeight    =   7650
   ClientLeft      =   2850
   ClientTop       =   750
   ClientWidth     =   3630
   LinkTopic       =   "Form1"
   ScaleHeight     =   7650
   ScaleWidth      =   3630
   Begin VB.TextBox txtClone
      Height          =   285
      Index           =   2
      Left            =   120
      TabIndex        =   0
      Text            =   "txtClone"
      Top             =   120
      Visible         =   0   'False
      Width           =   1575
   End
   Begin VB.CommandButton Command1
      Caption         =   "Crea controlli"
      Height          =   375
      Left            =   2040
      TabIndex        =   2
      Top             =   960
      Width           =   1575
   End
   Begin VB.TextBox Text1
      Height          =   285
      Left            =   2160
      TabIndex        =   1
      Text            =   "0"
      Top             =   480
      Width           =   1335
   End
   Begin VB.Label Label1
      Caption         =   "Numero controlli"
      Height          =   255
      Left            =   2160
      TabIndex        =   3
      Top             =   240
      Width           =   1215
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Sub Clona(NumContr As Integer)
 Dim FirstContr As Integer, LastContr As Integer, ContrNum As Integer
 With txtClone
  FirstContr = .LBound
'LastContr = FirstContr + NumContr
  LastContr = .UBound
'elimina i controlli non piu' utilizzati
' For ContrNum = .UBound To NumContr Step -1
  For ContrNum = LastContr To NumContr + FirstContr Step -1
'il primo controllo e' sempre caricato
   If ContrNum = FirstContr Then
    .Item(ContrNum).Visible = False
   Else
    Unload .Item(ContrNum)
   End If
  Next ContrNum
'crea i controlli necessari necessari partendo dall'ultimo controllo
esistente fino _
all'ultimo controllo da caricare
' If ContrNum >= FirstContr Then .Item(FirstContr).Visible = True
' For ContrNum = .UBound + 1 To NumContr - 1
  For ContrNum = LastContr To NumContr + FirstContr - 1
'inizio modifica
'il primo controllo non puo' essere scaricato
   If ContrNum > LastContr Then Load .Item(ContrNum)
'fine modifica
   .Item(ContrNum).Visible = True
  Next ContrNum
'imposta il testo e la posizione dei controlli
' If NumContr >= FirstContr Then
  If NumContr > 0 Then
'  For ContrNum = .LBound To .UBound
   For ContrNum = FirstContr To .UBound
'imposta il testo dei controlli clonati
    .Item(ContrNum).Text = "Controllo N° " & ContrNum
'imposta la posizione dei controlli clonati
    If ContrNum > FirstContr Then
     .Item(ContrNum).Top = .Item(ContrNum - 1).Top + .Item(ContrNum -
1).Height
    End If
   Next ContrNum
  End If
 End With
End Sub
Private Sub Command1_Click()
 If IsNumeric(Text1.Text) Then Clona Text1.Text
End Sub
Private Sub Form_Load()
 MsgBox ("Dopo avere chiuso tutte le applicazioni, provate a creare
1000-5000 controlli," _
 & "scoprirete che in winxx, le risorse di sistema finiscono molto prima
della memoria ram.")
 MsgBox ("Dopo avere raggiunto il limite delle risorse di sistema,
divertitevi a cercare" _
 & "di usare win o qualche programma")
End Sub
----------------------
Dave79 ha scritto nel messaggio
