On Dec 19, 2007, at 9:19 AM, Dennis Meulensteen wrote:

> I know that I can use the Class Designer's Object Info panel to  
> view the
> relationships between graphical objects. I know how to use  
> self.Form to get
> to those objects and their properties.
>
> But how on earth do I create a button that calls a BuzObj's  
> SetWhere method?
> Dabo keeps telling me there's no such global object whenever I call  
> the
> BusObj by name. Whatever I prefix it with doesn't seem to help  
> either, I've
> tried self.Form and such, but no luck.

        The concept that's tripping you up is that you are trying to make a  
button smarter and more responsible than it really should be. Buttons  
and other UI elements should simply display the information they're  
given, and report user interaction where appropriate to the "proper  
authorities". In 99% of the cases, UI elements should respond to user  
events by calling a form method.

        The form is a lot "smarter" than any of its controls, and  
"knows"about its bizobjs and how to talk to them.

        So in your case, the button should only tell the form that it has  
been clicked. After that, the button's job is done. It does this by  
calling the appropriate form method; it is in this method that you  
handle the communication with the bizobj.

        While typing this, I see that John has responded to your question,  
and with all due respect, his answer is wrong. Buttons should never  
"know" about bizobjs, much less try to directly manipulate them. They  
should talk with the form, and occasionally to sibling controls, but  
never beyond that.

        This may seem like an odd way to do things, but it is a standard  
software Design Pattern named "Chain of Responsibility". Essentially,  
it means that each object knows what it can handle itself, and where  
to pass any other requests that it can't handle. In this case, the  
button tells the form that it's been clicked; the form uses that  
information to tell the appropriate bizobj to set its Where clause to  
the current value; the bizobj uses that information to update the  
appropriate cursor with the filter expression passed by the form.

-- Ed Leafe
-- http://leafe.com
-- http://dabodev.com




_______________________________________________
Post Messages to: Dabo-users@leafe.com
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users
Searchable Archives: http://leafe.com/archives/search/dabo-users
This message: http://leafe.com/archives/byMID/dabo-users/[EMAIL PROTECTED]

Reply via email to