also in the form.load I create some arrays and a cursor to hold values for
listboxen &c. on the form, but where do I set the rowsource properties - if
I set them directly in their control properties or programmatically in the
control's init the arrays aren't yet in scope
same for the controlsources which I want to bind to properties of the data
object (when I get one)
I had a heck of a time figuring out the array RowSource issue. I figured,
since the listbox or combobox Inits before the form Inits, that the
controls wouldn't be able to see a RowSource array on the form. But that's
not true.
So, if you add your rowsource arrays as properties to the form at design
time, using the New Property option from the Form menu, the listboxes and
comboboxes will see them. Make sure to specify the arrays as:
aMyArray[1]
If you call code to fill those arrays from the form's Init() method, the
controls will be populated when the form appears.
Another option is to create a listbox baseclass that contains its own
internal array rowsource. If you do that, though, you can't have it fill on
Init() if you're depending on the form to call data into being, since the
listbox will init before the form. My listbox class has a FillOnInit switch
that I can turn on or off at design time depending on the circumstance.
When .T., the listbox calls its own Fill() hook method when it inits. If
I'm depending on availability of meta- or other data from the business
object, I turn this switch off and have the form call the Fill() method
when it (the form) is satisfied that it's got all its data.
Ken Dibble
www.stic-cil.org
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/profox
OT-free version of this list: http://leafe.com/mailman/listinfo/profoxtech
** All postings, unless explicitly stated otherwise, are the opinions of the
author, and do not constitute legal or medical advice. This statement is added
to the messages for those lawyers who are too stupid to see the obvious.