Restarting a form in VB6

al4629740
al4629740 used Ask the Experts™
on
I am trying to unload my form and start over.  Why doesn't the following code work?  It simply ends the program


Splash4.Show
            
            Unload CAPOrganizing
            
            Load CAPOrganizing
            
            Splash4.Hide

Open in new window

Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Éric MoreauSenior .Net Consultant
Top Expert 2016
Commented:
if Splash4 is your loading/first form, ending it also ends the program

Author

Commented:
I don't understand what your saying exactly.  Can you explain that again?
Éric MoreauSenior .Net Consultant
Top Expert 2016

Commented:
what is your starting form? which one is set in the project properties?
Success in ‘20 With a Profitable Pricing Strategy

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden using our free interactive tool and use it to determine the right price for your IT services. Start calculating Now!

Top Expert 2012
Commented:
You also need:
CAPOrganizing.Show

Author

Commented:
my first form is a splash screen also called Splash1

Would it be instead

            Splash4.Show
           
            Unload CAPOrganizing
           
            CapOrganizing.Show
           
            Splash4.Hide
Martin LissOlder than dirt
Most Valuable Expert 2017
Distinguished Expert 2018

Commented:
Why do you want to start over and what exactly do you mean by "start over". End the program and restart it, or something else?

Author

Commented:
I would like to basically unload and load the form again....
Would it be instead
            Splash4.Show
            Unload CAPOrganizing
            CapOrganizing.Show
            Splash4.Hide
Exactly. The only addidion may be

CAPOrganizing.Hide 'In case unloading takes a wile - hide form if it's visible and show splash
Splash4.Show
Unload CAPOrganizing 'etc
But in most cases youdon't need reload form. If you have some code in Form_Load event - place it in some Public Sub, smth like this:
Private Sub Form_Load()
   InitForm
End Sub
Public Sub InitForm(probably_some_initial_value As Something)
   'Your initializing/updating/refreshing code here
End Sub

Open in new window

And instead of reloading form just call
CAPOrganizing.InitForm(conditions)

Author

Commented:
How does initform work?

What do I put for conditions?
Why do you need to reload form? In most cases you just need to execute code in Form_Load event. So you can move all this code into InitForm sub:
Was:
Private Sub Form_Load()
  'A lot of initializing code here
End Sub

Open in new window

Should be:
Private Sub Form_Load()
  Call InitForm(0) '0 means you call InitForm for the first time, from withing Form_Load Event 
End Sub
Public Sub InitForm(condition As Long)
  'A lot of initializing code here
End Sub
'Any time you need 'Reload' form
Call YourFormName.InitForm(1) 

Open in new window

Condition parameter is optional, just in case you need to tell InitForm Sub to execute or not some staff according to your needs, for example, during first call (condition=0) populate listbox/ComboBox with values and set .ListIndex=0, while for other calls leave populated controls as they are and set .ListIndex = some other value.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial