Newsgroup: it.comp.lang.visual-basic
Titolo: problemi con mdi_child vb4

Vorrei sapere come gestire le finestre dei mdi child; mi spiego.
Ho creato un array di mdi child e vorrei decidere quale mettere in
primo piano, quale in secondo se in forma max o ridotte a icone ecc.
Io ho utilizzato windowstate per renderle max/min
vbminimized/vbmaximized e zorder 0/1 per front/back.
Il problema e' che i comandi invocano il form load del mdi child dove
ho del codice che non deve essere eseguito se non al 1' caricamento.
Come posso fare?
Bye 
Daniele
+--------------------------------------+
 E-mail to:<ld...@NOSPAMtuttocitta.it>
        (togliere...NOSPAM)
     (please remove...NOSPAM)
+---------------------------------------+

 
Per agire su una qualsiasi proprieta' di una form, prima occorre avere la form!
Appena si tenta di accedere alle proprieta' di una form, questa (la form) viene automaticamente creata.
Ovviamente quando viene creata viene richiamao anche il metodo Form_Load.
Il Form_Load, diversamente da come credi, viene richiamato UNA SOLA VOLTA durante
l'intera vita del form. Al massimo il problema e' che viene richiamato al momento sbagliato......
La soluzione e' quella di non mettere NULLA nel Form_Load, creare una funzione public nel
form che inizializza il form e magari lo rende visibile, ed usarla al posto del frm.show.
Esempio:
'---------------------- NEL FORM ---------------------
Sub Form_Load ()
	' non metto NULLA
End Sub
Public sub Apri()
	' Inizializzo il form (o meglio, mi inizializzo)
	me.Caption = "Ciao Mondo"
	' ......
	' ......
	' ......
	Me.show	' Mi rendo visibile
End Sub
'---------------------- CHI APRE IL FORM---------------------
sub ApriTuttiForm()
	dim Cont	as integer
	' Inizializzo i forms
	for Cont=0 to 5
		frmEsempio(Cont).Left = (frmMDI.ScaleWidth/6) * Cont	' Questa richiama il Form_Load (che ora e' vuoto)
		frmEsempio(Cont).Width = frmMDI.ScaleWidth/6
	next Cont
	'  Apro i forms
	'
	' NB: l'ultima finestra aperta e' avanti a tutte, e la prima e' dietro a tutte
	'
	for Cont=0 to 5
		Call frmEsempio(Cont).Apri
	next Cont
end sub
-- 
Hi, Ciao
Ettore                 By -MES-
http://www.aspide.it/freeweb/ilmes

form che inizializza il form e magari lo rende visibile, ed usarla al posto del frm.show.
su questo hai ragione, e ho superato l'ostacolo come mi hai detto. Il
mio errore di pensare che eseguisse il form load derivava dal fatto
che quando eliminavo una form quando le volevo tutte ridotte ad icona
me ne creava una nuova eseguendo quindi il form_load.
Grazie dell'aiuto, 
un'altra domanda: come posso mettere le scrollbars verticali (o fare
im modo che appaiano automaticamente) all'interno dei  forms quando
metto due form child disposti col metodo arrange horizontal, visto che
non riescono a visualizzare tutti i controlli (vengono ridotti della
meta')?


 
A meno di smentite, credo proprio che non si puo' fare!
Devi posizionarle e ridimensionarle tu a mano   :-(((
Per far questo, ti ricordo che i tutti i forms aperti sono elencati nella collezione Forms.
esempio:
Dim Cont%
For Cont=0 to Forms.Count-1
	If Forms(Cont).MDIChild then
		' Questo e' un MDIChild, lo riposiziono
		Forms(Cont).Left = xyz
		Forms(Cont).Width = xyz
		Forms(Cont).Top = xyz
		Forms(Cont).Height = xyz
		' oppure usa Forms(Cont).Move xxx,yyy,www,hhh
	end if
Next Cont
