Newsgroup: it.comp.lang.visual-basic
Titolo: Posso immettere oggetti interni tramite codice?

Salve sono nuovo nelle news, avrei un problemino.
Vorrei poter permettere all'utente l'inserimento di un oggetto interno di
VB6, tramite la pressione di un tasto.
Poter dare ad esempio la possibilità di inserire n TextBox o m Label in un
form.
Ringrazio chiunque possa aiutarmi.
mari...@tin.it

Puoi farlo in due modi:
(a) creando a design time un controllo invisibile per ogni controllo che
vuoi generare (ogni 'prototipo' deve avere un index). Per creare nuove
istanze fai semplicemente la Load dell'oggetto con l'indice opportuno - come
in un array. Ovviamente devi tener conto degli oggetti eventualmente
rimossi, oltre che degli indici dei 'vivi'.
(b) puoi creare qualsiasi oggetto dal nulla (purché sia referenziato dal
progetto, e gli oggetti standard lo sono sempre) usando la collection
Controls disponibiln ogni form - 
p.es
.:
   Dim cmd As CommandButton
   Set cmd = Me.Controls.Add("VB.CommandButton", "Command2")
   cmd.Move 0, 0
   cmd.Visible = True
   cmd.Enabled = True
    ...
    Me.Controls.Remove "Command2"
(La seconda soluzione richiede piů risorse di programmazione, soprattutto
nella gestione degli eventi. Se devi creare un controllo replicabile forse č
meglio se ti orienti alla prima soluzione.)
----------------------------------------------------------------------
Stefano Minardi
Zetesis: 
zet...@mclink.it
----------------------------------------------------------------------

 form.
Fino a VB5 (se non sbaglio con VB6 si possono creare controlli "dal nulla"!)
e' necessario che gia' esistano nel form dei controlli, Label e TextBox nel
tuo caso, che abbiano la proprieta' Index valorizzata. Per esempio:
Label1(0) e Text1(0). Quindi alla pressione di un tasto (o di quel che vuoi:
questo e' un altro discorso) da parte dell'utente il tuo codice dovra', per
esempio:
' Caricare il nuovo controllo
Call Load(Text1(1))
With Text(1)
  ' Renderlo visibile
  Let .Visible = True
  ' Metterlo in posizione
  Call .Move(...
  ' Impostare eventuali altre
  ' proprieta'
  ...
End With
Alla chiusura (o in un altro momento che ritieni opportuno ma ovviamente
prima della chiusura della tua applicazione) se vorrai ritrovare alla
riapertura i controlli-utente, dovrai provvedere a memorizzare da qualche
parte natura e proprieta' di tali controlli. Potresti usare un file ini, un
file di testo (ispirandoti, per esempio, alla struttura dei file .FRM: prova
ad aprirli con un editor), il file registro di windows o un database tipo
access. Io preferirei i file ini se le prestazioni sono un problema, un file
access se la struttura del marchingegno fosse complessa/articolata.
Un altro problema, nel caso dei controlli TextBox, e' la fine che faranno le
informazioni in essi digitate dall'utente: se la struttura della tua
applicazione prevede un database sottostante dovrai anche provvedere a
creare nuovi campi nelle tabelle opportune. Se il database non c'e' da
qualche parte dovrai pur sempre scrivere quelle informazioni.
Insomma, nulla di trascendentale ma da gestire con accortezza ed
intelligenza: appena la cosa diventasse un po' complessa ti ritroveresti a
riscrivere Access in Visual Basic: ne vale la pena?
--
Ciao.
Maurizio

 wrote in message
8b95e9$9m7$2...@nslave2.tin.it...

Non è un creare un DataBase il mio problema.
TI ringrazio.