Vai al contenuto
PLC Forum


Problema Con Visual Basic - all'apertura di ogni form chiudesse


Brothers

Messaggi consigliati

Vi chiedo un parere su questo problema:

Ho una Toolbar in un programma in costruzione

e vorrei che all'apertura di ogni formMDI chiudesse

i formMDI eventualmente gia aperti.

La soluzione che ho adottato è quella qui sotto

Funge, ma come facilmente intuirete rende tutto

più macchinoso e "sfarfallante" inoltre impegna

molte più risorse.

credo che sia perche esegue lo stesso la chiusura di

tutti i form anche non trovandoli aperti.

Credo di sapere ,per intuito ,che si puo fare di meglio

sapreste darmi un consiglio

----------------------------------------------------------------------------

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)

Select Case Button.Key

Case "Resolve"

'Commento solo il primo gli altri vanno da se.

'Chiude i form eventualmente aperti.

frmAdapt.Hide

frmScan.Hide

frmBrowser.Hide

frmBrowser1.Hide

frmConnection.Hide

frmDocument.Hide

frmLogConnection.Hide

frmSplash.Hide

frmSys.Hide

frmTrace.Hide

frmNetWork.Hide

frmNet.Hide

frmAttachment.Hide

'Visualizza il form.

frmResolve.Show

Case "Adapt"

frmScan.Hide

frmBrowser.Hide

frmBrowser1.Hide

frmConnection.Hide

frmDocument.Hide

frmLogConnection.Hide

frmSplash.Hide

frmSys.Hide

frmTrace.Hide

frmNetWork.Hide

frmNet.Hide

frmAttachment.Hide

frmAdapt.Show

Case "Trace"

frmAdapt.Hide

frmScan.Hide

frmBrowser.Hide

frmBrowser1.Hide

frmDocument.Hide

frmLogConnection.Hide

frmSplash.Hide

frmSys.Hide

frmConnection.Hide

frmNetWork.Hide

frmNet.Hide

frmAttachment.Hide

frmTrace.Show

Case "Scan"

frmAdapt.Hide

frmBrowser.Hide

frmBrowser1.Hide

frmDocument.Hide

frmLogConnection.Hide

frmSplash.Hide

frmSys.Hide

frmConnection.Hide

frmTrace.Hide

frmNetWork.Hide

frmNet.Hide

frmAttachment.Hide

frmScan.Show

Case "Connection"

'Lancia attive.bat.

WinExec CdBox.Filename, 10

frmAdapt.Hide

frmScan.Hide

frmBrowser.Hide

frmBrowser1.Hide

frmDocument.Hide

frmLogConnection.Hide

frmSplash.Hide

frmSys.Hide

frmTrace.Hide

frmNetWork.Hide

frmNet.Hide

frmAttachment.Hide

frmConnection.Show

Case "NetWork"

frmAdapt.Hide

frmConnection.Hide

frmScan.Hide

frmBrowser.Hide

frmBrowser1.Hide

frmDocument.Hide

frmLogConnection.Hide

frmSplash.Hide

frmSys.Hide

frmTrace.Hide

frmNet.Hide

frmAttachment.Hide

frmNetWork.Show

Case "Server"

frmNetWork.Hide

frmAdapt.Hide

frmConnection.Hide

frmScan.Hide

frmBrowser.Hide

frmBrowser1.Hide

frmDocument.Hide

frmLogConnection.Hide

frmSplash.Hide

frmSys.Hide

frmTrace.Hide

frmAttachment.Hide

frmNet.Show

Case "AnonyMailer"

frmAdapt.Hide

frmScan.Hide

frmBrowser.Hide

frmBrowser1.Hide

frmConnection.Hide

frmDocument.Hide

frmLogConnection.Hide

frmSplash.Hide

frmTrace.Hide

frmNetWork.Hide

frmNet.Hide

frmSys.Hide

frmAttachment.Show

frmMail.Show

Case "System"

frmAdapt.Hide

frmScan.Hide

frmBrowser.Hide

frmBrowser1.Hide

frmConnection.Hide

frmDocument.Hide

frmLogConnection.Hide

frmSplash.Hide

frmTrace.Hide

frmNetWork.Hide

frmNet.Hide

frmAttachment.Hide

frmSys.Show

Case "Esc"

On Error Resume Next

If MsgBox(" Sicuro di voler uscire?", vbYesNo) = vbNo Then Exit Sub

Unload Me

End

End Select

End Sub

Link al commento
Condividi su altri siti


Io, di solito, quando apro un novo form chiudo il precedente. In questo modo te la cavi con una riga di istruzione. Lascio i form aperti solo quando è indispensabile come, ad esempio, quando al form è legato un timer che deve continuare ad operare.

Link al commento
Condividi su altri siti

grazie e scusa la mia ignoranza sono molto principiante

ma io ho una Toolbar con molti pulsanti e non sono tutti relativi cioe

si puo passare indipendentemente da un form all'altro non sono a scelta obbligatoria e passando ad un altro form vorrei che qualunque form sia aperto si chiuda (questo perche non so dare una filologica di quale dovrebbe rimanere aperto ) cosi che poi quando chiudo un form deve aprirsi il form frmSplash

una specie di about con le informazioni sul programma.

Ma forse non ho capito bene la tua risposta

Link al commento
Condividi su altri siti

come fa il programma a sapere qual'è il form momentaneamente aperto per poterlo chiudere?

non c'e una istruzione standard per dire:

qualunque sia il form aperto si chiuderà

grazie anticipate

Link al commento
Condividi su altri siti

Io (che sono autodidatta, ma smanetto spesso in VB) farei così:

Esempio che nasconde tutte le form :

Dim frm As Form
    
For Each frm In Forms
    ‘Nasconde le form tranne frmMain (che supponiamo sia la MDI principale)
    If frm.name <> "frmMain" Then frm.hide 

   ‘Oppure le scarica dalla memoria:
   ‘ If frm.name <> " frmMain " Then unload frm.
Next

Senti anche altre “campane” più esperte…

Link al commento
Condividi su altri siti

grazie mille lo stesso ma smanettando ho risolto cosi

'Con questa istruzione chiudo qualsiasi form aperto.

ActiveForm.Hide

'Poi gli passo le istruzioni di quale form voglio aprire(per esempio:

frmSys.Show

2 righe soltanto e funzia benissimo

Link al commento
Condividi su altri siti

Se non sbaglio con il metodo Hide non scarichi il form dalla memoria .

Con Hide lo nascondi alla vista ma il form relativo rimane caricato quindi la gestione delle risorse non è ottimale .

Per scaricare il form devi usare il metodo Unload come già segnalato precedentemente .

Se comunque il funzionamento ti aggrada procedi come hai fatto .

bigalex :blink:

Modificato: da bigalex
Link al commento
Condividi su altri siti

Scusate ancora

ma dove trovo l'insieme MSDN da scaricare che non ho il cd

(non ho manco uno straccio di manuale)

Lo ammetto ho il vb6 a scrocco è grave?

Link al commento
Condividi su altri siti

1* Grazie "ragazzi" per le dritte sui manuali

------------------------------------

2* No no non sono cosi tanti form aperti perche ad ogni apertura di form

do l'istruzione

ActiveForm.Hide

oppure

ActiveForm.Unload

Che mi chiude il form precedentemente aperto

Funziona egregiamente (per ora almeno)

------------------------------------

Diavolo di un Urbani <_<

------------------------------------

PLC Forum = Gran Forum :D

Modificato: da Brothers
Link al commento
Condividi su altri siti

  • 4 weeks later...

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...