ljaques
asked on
Moving ALL of Form's procs into Module Save Mem?
I am interested in making a program that can create tons of instances of a particular form. I do this like so:
Dim MyFormInstances() as Form1
Redim MyFormInstances(10)
Set MyFormInstances(0) = New Form1
In Form1 i have TONS of procedure calls: some my own, some "events" that i am handling. I was wondering though, if i am creating several nstances of the same form ("Form1" in this case) would each of these procedures that were inside the form1 be duplicated into each of these instances? If so wouldnt this mean each instance would continue to use more and more memory?
If so then would it be wiser to rewrite and move ALL of my procedures (and functions) that exist in the Form1 into a Module and pass to the module's proc's/func's the Form who is requesting the information..Like this:
----
FORM1 CODE:
Public MyValue as integer
private sub FORM1_CLICK()
'Me is VB's term for the current form -- in this case, the instance
Call Module_FORM1_CLICK(Me)
end sub
------
MODULE CODE:
public sub Module_FORM1_CLICK(Form as Form1)
Form.MyValue = 1
end sub
----
I would do this with EVERY procedure that existed inside FORM1. I know this wouldn't eliminate the possibilty of using more and more memory but at least (as it appears) it will reduce it significantly. PLEASE LET ME KNOW IF THIS IS CORRECT or if Windows handles this. Please explain in detail please.
Dim MyFormInstances() as Form1
Redim MyFormInstances(10)
Set MyFormInstances(0) = New Form1
In Form1 i have TONS of procedure calls: some my own, some "events" that i am handling. I was wondering though, if i am creating several nstances of the same form ("Form1" in this case) would each of these procedures that were inside the form1 be duplicated into each of these instances? If so wouldnt this mean each instance would continue to use more and more memory?
If so then would it be wiser to rewrite and move ALL of my procedures (and functions) that exist in the Form1 into a Module and pass to the module's proc's/func's the Form who is requesting the information..Like this:
----
FORM1 CODE:
Public MyValue as integer
private sub FORM1_CLICK()
'Me is VB's term for the current form -- in this case, the instance
Call Module_FORM1_CLICK(Me)
end sub
------
MODULE CODE:
public sub Module_FORM1_CLICK(Form as Form1)
Form.MyValue = 1
end sub
----
I would do this with EVERY procedure that existed inside FORM1. I know this wouldn't eliminate the possibilty of using more and more memory but at least (as it appears) it will reduce it significantly. PLEASE LET ME KNOW IF THIS IS CORRECT or if Windows handles this. Please explain in detail please.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
So, by using the Collections object i can save MASSIVE amounts of memory or is it just a good way of keeping things organized?!?
You won't be able to save massive amounts of memory and your solution causes more problems than it will solve.
Using a collection is just a good way of keeping things organised.
Using a collection is just a good way of keeping things organised.
Instead of using your own array (MyFormInstances())
Try declaring a new instance like this:
Dim moForm1 As Form1
Set moForm1 = Forms.Add("Form1")
moForm1.Visible = True
You can then refer to the VB forms collection:
MsgBox Forms.Count
MsgBox Forms(0).Caption