Hi all.
I came up with a workaround for local constants in behaviors. It doesn't
actually use constants. Instead I have an array of "constants" I set for a
particular object. For example, in my customer stack properties, I have an
array with key value pairs like so:
cParentTable1:
cParentKey3:
cDGName: dgCustomers
cParentKey1:
cTableName: Customers
cParentTable3:
cAltkey1: contactid
cPriKey: custid
cUniqueValueList: customername
cFocusField: fldCustomerName
cParentTable2:
cAltDGName1: dgcontacts
I don't really need the empty values, but this is a standard array in all my
stacks, and the empty values aren't used.
Now in my behavior for a New button I have the following. Note that the local
variables have the same names as the array keys:
local cTableName, cDGName, cFocusField -- note this is only a subset of the
array keys
on getStackConstants
put getParentStack(the long id of me) into tThisStack -- just gets the long
name of the parent stack
-- retrieve stack constants from stack property
put the stackConstants of tThisStack into aStackConstants -- retrieves the
constants array for the parent stack
put the keys of aStackConstants into tConstantList
repeat for each line tConstant in tConstantList
do "put " & quote & aStackConstants [tConstant] & quote & " into " &
tConstant -- variable of the same name as the array key
end repeat
end getStackConstants
Then I have a mouseUp handler in the behavior script that is the actual
behavior for a New Customer button, but of course it could be any handler.
Calling getStackConstants first, I preload the local variables with the values
from the array. Of course they do not have to be script locals, but then you
would have to call getStackConstants in every handler in the behavior. This way
you only need to call it in the initial handler:
on mouseUp pMouseBtnNo
-- load stack constants
getStackConstants -- create behavior local variables
-- whatever code here. I snipped mine for brevity
end mouseUp
The upshot is, now in each stack that has a btnNew button with this behavior
set and an array with the "constants" set to what I need, everything just
works. Of course, the array could be a property of any object, and the command
could be getConstants pLongObjectID or something. In fact I will probably do
that. The trick is that getStackConstants needs to live in the behavior script.
Hope this helps others to consider using behaviors when they need some kind of
constants or set of fixed variables.
Bob S
_______________________________________________
use-livecode mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode