Newsgroup: it.comp.lang.visual-basic
Titolo: Form dinamici

elemento portandolo a 11 ed utilizzando troppe risorse.

 elemento portandolo a 11 ed utilizzando troppe risorse.
Prova a fare cosi;:
Dim AfrmAggiungiConto() As Object
Dim NrAfrmAggiungiConto as integer
Sub Form_Load()
	dim ixF1,ixF2,ixF3
 
	' Alloco i form
	'
	ixF1 = CreateNewForm()
	AfrmAggiungiConto(ixF1).show
	ixF2 = CreateNewForm()
	AfrmAggiungiConto(ixF2).show
	ixF3 = CreateNewForm()
	AfrmAggiungiConto(ixF3).show
	' Distruggo i primi due form
	'
	call DestroyForm(F1)
	call DestroyForm(F2)
	' Ne apro altri due
	'
	ixF2 = CreateNewForm()
	AfrmAggiungiConto(ixF2).show
	ixF1 = CreateNewForm()
	AfrmAggiungiConto(ixF1).show
	' A questo punto: ixF2 occupa lo slot 0
	' e ixF1 occupa lo slot 1
End Sub
Function CreateNewForm() as integer
	Dim C%
	For C%=0 to NrAfrmAggiungiConto-1
		if AfrmAggiungiConto(C%) is nothing  then
			OpenNewForm=C%
			Set AfrmAggiungiConto(C%) = new frmAggiungiConto
			AfrmAggiungiConto(C%).Tag = C%
			exit Function
		endif
	Next C%
	Redim Preserve AfrmAggiungiConto(NrAfrmAggiungiConto)
	AfrmAggiungiConto(NrAfrmAggiungiConto).Tag = NrAfrmAggiungiConto
	OpenNewForm=NrAfrmAggiungiConto
	NrAfrmAggiungiConto=NrAfrmAggiungiConto+1
End Function
Sub DestroyForm(IxF as integer)
	if not (AfrmAggiungiConto(IxF) is nothing)  then
		On Error resume next
		unlaod AfrmAggiungiConto(IxF)
		On Error goto 0
		set AfrmAggiungiConto(IxF)=nothing
	end if
End Sub
Le ho scritte al volo, spero non ci siano troppi errori di sintassi.
 
Salutoni,
-- 
Hi, Ciao
Ettore                 By -MES-
http://freeweb.aspide.it/freeweb/ilmes
 
(con OCX per stampare i Recordset)
Il sito comune di programmatori VB
http://members.xoom.com/it_lang_vb

Salve a tutti.
Ho un problema che non riesco a risolvere, anche se poi, sotto sotto,
non ci vuole un laurea per trovare la soluzione.
Devo creare un form dinamico (e questo non è un problema) che mi possa
visualizzare più di una finestra contemporaneamente, e tutte uguali.
Il procedimento che ho seguito è questo
Nella sezione generale della finestra principale( questa form viene
chiamata dalla principale) ho inserito questa dichiarazione di array
dinamico:
	' Crea un array della finestra AggiungiConto
	Dim AfrmAggiungiConto() As New frmAggiungiConto
Poi, nella sezione del pulsante per aprire la form ho inserito questo
codice:
	Static n As Integer
	n = n + 1
	ReDim Preserve AfrmAggiungiConto(n)
	AfrmAggiungiConto(n).Show
Il problema non è il fatto che il codice non funzia, perchè se è per
questo funziona. Il problema è che se apro 10 finestre, anche
chiudendo le prime 9, aprendone un altra, all'array aggiunge un altro
elemento portandolo a 11 ed utilizzando troppe risorse.
Potete descrivermi un procedimento meno complicato o perlomeno che mi
eviti questo spreco?
Grazie a tutti, Gianni Zacchia.
P.S.: Se potete postare un esempio, il tutto è sicuramente più
semplice da capire.

Potresti seguire questo procedimento:
la variabile matrice di form la dichiari in un modulo standard;
poi nello stesso modulo dichiari una variabile intera dove
conserverai il numero di form aperti; nella procedura di click
del pulsante incrementi di 1 la variabile contatore e poi esegui
il ridimensionamento della variabile di form in base al contatore;
infine, nella procedura di unload della form decrementi il contatore
e poi ridimensioni in base al contatore la variabile di form.
Potrai notare che la variabile contatore conterrà sempre il numero
esatto di istanze della form originaria (escluso essa stessa)
Ciao
Christian de Miranda
soft...@starbit.com

non ci vuole un laurea per trovare la soluzione.
Calmi, ragazzi, calmi....
In VB 5 si possono gestire le collections di oggetti......
Ora purtroppo non ho tempo di risolvere il problema dell'amico, ma devo
affrontarlo anch'io la settimana prossima...
Comunque non dovrebbe esser difficile implementarlo.
Se intanto qualcuno vuole provarci ha un pranzo pagato :)) poichè mi
eviterebbe di trovare la soluzione a me.
Ciao, Luther
E-Mail: 
blis...@mythos.it
 - ICQ UIN: 8761838 - web: 
http://www.blissett.com
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
No al proliferare dei peli del pube femminile. W la depilazione intima!
E' in corso la votazione per it.sesso.marpionismo, partecipa anche tu!