OpenDCL Forums

OpenDCL => Runtime/AutoLISP => Topic started by: jmaeding on March 23, 2010, 03:28:58 PM

Title: OnKillFocus running for textboxes on tab control, right after form show
Post by: jmaeding on March 23, 2010, 03:28:58 PM
I have a modal form with a tab control that has 6 tabs.
Each tab has several textboxes.  I typically have textboxes run the OnKillFocus and OnReturnPressed events to trigger that the user is done with that textbox, and I noticed the OnKillFocus function runs immediately after the form show, even before the initialize event code.  Isn't the initialize the very very first event that can run after a form show?
In addition, the tab control runs its OnChanged event before initialize also.
I am pretty sure this is not proper behavior for 6.0...23, as it worked on version 4.1.
Its having a pretty major effect on things so I want to check.
thanks
Title: Re: OnKillFocus running for textboxes on tab control, right after form show
Post by: jmaeding on March 23, 2010, 03:30:52 PM
feel free to move this to runtime issues, I should have put it there
Title: Re: OnKillFocus running for textboxes on tab control, right after form show
Post by: jmaeding on March 24, 2010, 09:12:53 AM
no replies, guess I better do an example project to demonstrate.
Funny thing is, last time I did this, the issue turned out to be something I solved by removing the varname from my flexgrid control in the editor.  The name was the same as the auto-assigned one, but the varname seemed to prevent the runtime for updating the flexgrid props.  I'm almost thinking you should just get rid of the varname altogether and force us to update code :)
I'll post back in a bit with exmaple....
Title: Re: OnKillFocus running for textboxes on tab control, right after form show
Post by: owenwengerd on March 24, 2010, 10:04:07 AM
There is no law that says OnInitialize must be the first event, but if it's not the first event, there should be a good reason at least. In this case, I'd say there is no good reason. However I'd like to see your sample.
Title: Re: OnKillFocus running for textboxes on tab control, right after form show
Post by: Fred Tomke on March 24, 2010, 11:18:53 PM
jmaeding,

Note that Tab_OnSelChanged event will be fired at creation time. That means it is before OnInitialize.
Note that Textbox_OnKillFocus will be fired on creation tim if it is the first control in the Z/Tab order list. As far as I remember it is valid also for each tab!

That are two samples of event which are fired before OnInitialize.

Fred
Title: Re: OnKillFocus running for textboxes on tab control, right after form show
Post by: jmaeding on March 29, 2010, 09:25:06 AM
wow, I believe that is exactly what I am seeing.
I did not run into this before, but maybe because I had buttons at top of z order (by accident).
I cleeaned up the z order when doing the transition to ver 6, and saw issues.
I guess I have to put state checking code in my textbox validation functions.
thx
Title: Re: OnKillFocus running for textboxes on tab control, right after form show
Post by: jmaeding on April 07, 2010, 10:04:28 AM
I'm thinking it is a bad thing for controls to fire events before OnInitialize of form they are owned by.
When is that ever useful?
It is bad because it wastes time firing the callbacks which are looking at default values for the controls.
The default values are never what you want, so it causes confusion in the program for nothing.
What I have to do now is set a global var before calling form_show, then use that flag in my OnKillFocus callbacks to not validate the control.
Is there some way to prevent the events from firing before form starts initializing?
Title: Re: OnKillFocus running for textboxes on tab control, right after form show
Post by: jmaeding on April 07, 2010, 11:18:21 AM
now that i am using flags to avoid callbacks running before form initializes, are there other events besides onkillfocus, and the OnChanged for tabs?
Is there any way for me to investigate other than a test project with every event in the world set to run?