Using Behaviors for Triggering UI Design - Run Time

William Prothero prothero at earthednet.org
Wed Mar 30 14:51:28 EDT 2016


I’m wondering, does a script only behavior stack have to be loaded first with “Start Using stack xyz” or once the behavior is set, LC automatically loads and connects it to the control. What I’m thinking is that if a lot of behaviors are used, and the appear in the project browser as stacks, there may be a lot of stacks showing up, and to avoid confusion, behavior stacks may want to be named so they appear together and maybe at the bottom of the alphabetical list.

True?

Bill

> On Mar 30, 2016, at 8:40 AM, Ali Lloyd <ali.lloyd at livecode.com> wrote:
> 
> NB the behavior entry in the dictionary has been rewritten and will be
> correct in the next release of 8.0. You can check out the raw text of it
> here if you want:
> https://github.com/livecode/livecode/blob/develop/docs/dictionary/property/behavior.lcdoc
> 
> On Wed, Mar 30, 2016 at 2:53 PM Richard Gaskin <ambassador at fourthworld.com>
> wrote:
> 
>> Sannyasin Brahmanathaswami wrote:
>>> Let's say we have a series of fields that have just a few words of
>>> text in them we want to center vertically. Text varies. Our designers
>>> may want to change the words over time.  I don't want to have to go
>>> in and manually adjust the top and bottom margins to achieve the
>>> position.
>>> 
>>> So then this is were dynamic runtime GUI layout/typesetting may be
>>> the way to go. Once the UI is all finished one could turn it off
>>> because the properties would be set for the fields.
>>> 
>>> We could create a behavior (ideally an external.livecodescript text
>>> file) with this in it
>>> 
>>> command centerTextVertically
>>> put the formattedheight of me into tTotalTextHeight
>>> put ( the height of me - tTotalTextHeight ) / 2 into tTopBottomMargins
>>> set topmargin of me to tTopBottomMargins
>>> end centerTextVertically
>>> 
>>> put the long ID of the button that contains that into the field; then
>>> make multiple copies of that field place them on the UI.
>>> 
>>> 1)  When, how and what is the most efficient way...to trigger this?
>>> in a preopenstack or preopencard handler? so that the UI fields are
>>> all centered when the card renders?
>>> 
>>> But then it needs to be a behavior of the stack or card, but then the
>>> reference to "me" fails to target the fields which all have the same
>>> name.
>> 
>> If it makes sense to put those fields into a group you can use
>> preOpenControl.
>> 
>> 
>>> 2) Still waiting on how to set a behavior to an
>>> external.livecodescript. Dictionary only descripts the long id of a
>>> button method.
>> 
>> Behaviors can be either buttons or stacks, and the stacks need not be
>> script-only.
>> 
>> When setting any behavior the syntax is:
>> 
>>   set the behavior of <obj> to <absoluteObjReference>
>> 
>> ...where <absoluteObjReference> is usually the long ID of a button, but
>> can be any unambiguous object reference.
>> 
>> FWIW you can use "the long id" for any object, even stacks.
>> 
>> In all cases, once set a behavior is resolved to a "rugged long ID", a
>> long ID where the stack portion is changed from the full file path as we
>> normally find it to just the stack name, allowing portability.
>> 
>> For example:
>> 
>>    button id 1004 of cd id 1003 of stack
>> "/home/rg/something/rsrc.livecode"
>> 
>> ...becomes:
>> 
>>    button id of cd id 1003 of stack "rsrc"
>> 
>> 
>> So when using a stack as a behavior you can write:
>> 
>>    set the behavior of btn "Something" to the long id of stack "rsrc"
>> 
>> ...or even more simply, since stack names are already unique:
>> 
>>    set the behavior of btn "Something" to the name of stack "rsrc"
>> 
>> 
>> --
>>  Richard Gaskin
>>  Fourth World Systems
>>  Software Design and Development for the Desktop, Mobile, and the Web
>>  ____________________________________________________________________
>>  Ambassador at FourthWorld.com                http://www.FourthWorld.com
>> 
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list