[AccessD] Resize Event / maximized

William Benson vbacreations at gmail.com
Fri May 6 16:17:31 CDT 2011


Hi Charlotte ....
I do not follow you. Since the application is calling the event an
indeterminate number of times I don't know where to set the variable to
True. And where to set it to False.

I want the procedures to run once on Form Load and then again only any time
the user changes the form size by any means EXCEPT merely deactivating and
reactivating the form.

I have struggled with this for hours. I did have a IgnoreResize variable
which I would set to true in the Load event.... and then set to False before
exiting Resize event. but because it passes through resize event up to three
times when form is maxed then some unwanted repetitions happen.

I think some of my code inside the Resize event that is altering the
insidewidth, optimizing widths of certain controls, and proportioning
distances between some controls is causing Resize to get called again. Not
sure...very hard to debug. For example I use CreateForm to create a hidden
form with a label that I can SizeToFit to assist with determining the
optimal width of some controls on my other form that got resized by the user
or on Load. This causes my main form to be deactivated I suppose, triggering
the Resize event on the main form. Again ....hard to know what the code is
doing to form focuses in the runtime because I can't get the same behaviors
I'm debug mode than when not debugging.

I am soon to skip the whole resize event and add a button for optimizing
form insidewidth and the position of controls. I am just too inexperienced
and impatient.
On May 6, 2011 1:29 PM, "Charlotte Foust" <charlotte.foust at gmail.com> wrote:
> Resize may fire more than once, because it DOES remember the last
> window setting but it doesn't go straight to that setting. It passes
> through other settings to get there. In addition to your unloading
> variable, you need a resize variable at the form level that you set
> when you open the form. Test for the variable in the routine where
> you want to run you code, and only run it if the variable is false.
> Set the variable to true and your code won't run again until the form
> is reopened.
>
> Charlotte Foust
>
> On Fri, May 6, 2011 at 6:51 AM, William Benson (VBACreations.Com)
> <vbacreations at gmail.com> wrote:
>> Hi,
>>
>> I have been playing with some code which is meant to run when a form is
>> resized. I have this code, on a test form.
>>
>> Option Compare Database
>> Option Explicit
>> Dim mbUnloading As Boolean
>>
>> Private Sub Form_Load()
>>     Debug.Print "Load"
>> End Sub
>>
>> Private Sub Form_Resize()
>>     If mbUnloading Then Exit Sub
>>     Debug.Print "Resize"
>> End Sub
>>
>> Private Sub Form_Unload(Cancel As Integer)
>>     Debug.Print "Unloading"
>>     mbUnloading = True
>> End Sub
>>
>>
>> The result in the immediate window varies based on the size condition the
>> form had at last time it was closed. If the form was not maximized, the
>> resize event is called only once according to the immediate window
results.
>> But if the form WAS maximized at the time it was last closed, the word
>> "Resize" appears 3 times in the immediate window. WOW. That means it is
>> running my code in that event in triplicate. Any idea why?
>>
>> Also, if I put DoCmd.Maximize in the Load event, then whether the form
had
>> last been closed maximized or not, the Resize Event is fired three times
on
>> form Load. That as opposed to only once if I had DoCmd.Maximize in a
button
>> click event and clicked it - then it occurs only once. So, any idea why
>> Maximizing during the Load event makes Form_Resize be called three times
>> instead of twice? In fact,  since multiple clicks of the command button
that
>> maximizes will not cause the Resize event to fire, it makes no sense to
me
>> that when the form had last been closed in Maximized window, Resize
should
>> be called any more than ONCE during this procedure:
>>        Private Sub Form_Load()
>>             DoCmd.Maximize
>>        End Sub
>>
>> --
>> AccessD mailing list
>> AccessD at databaseadvisors.com
>> http://databaseadvisors.com/mailman/listinfo/accessd
>> Website: http://www.databaseadvisors.com
>>
>
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com



More information about the AccessD mailing list