Sometimes, even if you know the framework as well as I do, you re- 
discover a feature that you had forgotten about. This happened  
tonight as I was going over the interaction between a grid and its  
form, so I thought I'd pass it along.

        When any of the events that cause the current record pointer to move  
are handled by the form, it generates a dEvents.RowNumChanged event,  
to which grids can bind so that they can update their display. The  
form code looked like:

dabo.ui.callAfter(self.raiseEvent, dEvents.RowNumChanged)

and the event handler in the grid would run this code:

try:
        self.CurrentRow = self.getBizobj().RowNumber
except AttributeError:
        pass

        In other words, the grid knew that the row had changed, but had no  
idea what the new row was. It had to then get a reference to the  
bizobj for that grid, if any, and then ask that bizobj for its  
current row number.

        Why is this inefficient? Because the code that raised the event  
*knew* the old and new row numbers; the fact that they were different  
was why it was raising the event in the first place. Then I  
remembered that you can pass data along to raiseEvent(); any keyword  
parameters you add are set as event data. So I changed the form code  
to read:

dabo.ui.callAfter(self.raiseEvent, dEvents.RowNumChanged,
                newRowNumber=biz.RowNumber, oldRowNumber=oldRowNum)

...and now the grid's event handler can just reference those values  
directly! They will have the same names as the parameter keys:

try:
        self.CurrentRow = evt.newRowNumber
except AttributeError:
        pass

        This may be a small savings overall, but I thought that it  
illustrated a handy mechanism built into the Dabo event class that  
you might use to improve your applications.

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




_______________________________________________
Post Messages to: [email protected]
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