Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - chiusura progetto mdi + form figlie
Forum - Visual Basic 6 - chiusura progetto mdi + form figlie

Avatar
piter123 (Normal User)
Pro


Messaggi: 145
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 8:09
Mercoledì, 30/06/2010
Salve ho un progetto con una form mdi di partenza, all'interno ci sono una serie di form child le quali contengono una cinquantina di oggetti vari tra label, text, combo, e msflexgrid disposti in ordine vario.
Tramite una routine all'avvio della MDI inizializzo le posizione (top,left,height e width) dei vari oggetti delle form figlie.
Il primo problema che ho è che nonostante che apra le figlie in Hide, piuttosto che le metta in visible=false o enabled=false mi fà vedere passo passo tutti i riposizionamenti delgli oggetti delle form figlie.
Il secondo problema si presenta alla chiusura del form mdi, nel quale nonostante esgua la chiusura unload delle form figlie, nonchè le metta visible=false o enable=false (lo sò che enabled=false non centra nulla ma è stato giusto per provare) mi fà apparire all'interno della form mdi la form figlia così come la mamma l'ha fatta, cioè con tutti gli oggetti alla rinfusa come sono disposti prima della sua inizializzazione.

in vba di excel esiste un comando che è Application.ScreenUpdating = false che nasconde l'effetto della macro fino a che non è terminata, non sò esiste quancosa di simile ?

PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 8:41
Mercoledì, 30/06/2010
Per il primo problema. Controlla che la Mdi abbia la proprietà AutoShowChildren = False.
Poi potresti settare i controlli delle form figlie prima di mostrare la Mdi.

Per quanto riguarda il secondo problema. Evidentemente durante l'esecuzione del programma le form figlie vengono chiuse prima di chiudere la mdi.
Quando fai un unload nomeform, se nome form è già chiusa si apre (ecco perchè la vedi come è stata disegnata) e quindi si chiude.

Ultima modifica effettuata da Alfonso il 30/06/2010 alle 8:44
PM Quote
Avatar
piter123 (Normal User)
Pro


Messaggi: 145
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 12:28
Mercoledì, 30/06/2010
mille grazie, impostando AutoShowChildren = False mi ha risolto sia il problema in avvio che in chiusura, ciao

PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 13:06
Mercoledì, 30/06/2010
Considera comunque che il secondo problema non lo vedi più ma continua ad esistere.
Ti consiglio di sostituire gli unload nomeform con una semplice routine che scarica solo le form aperte.
Nella form MDI:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form_Unload(Cancel As Integer)
  2.     Dim i As Integer
  3.     While Forms.Count > 1
  4.        i = Forms.Count - 1
  5.        Unload Forms(i)
  6.     Wend
  7.     Set NomeFormMDI = Nothing
  8. End sub


PM Quote