Datagrids and Nested Behaviors

Richard Gaskin ambassador at fourthworld.com
Fri Jul 20 20:13:01 EDT 2018


Bob Sneidar wrote:

 >> On Jul 20, 2018, at 15:31 , Richard Gaskin wrote:
 >>
 >> IIRC Bernd's suggestion was for global scope only, yes?  That is, it
 >> swaps the positions of the two bottom scripts shown below, and
 >> affects all DGs running in the session.
 >
 > Actually no that is why I was saying the syntax was the complete
 > opposite of what you'd expect. Bernd's solution actually produces the
 > results you see in your diagram. The custom behavior is inserted
 > between the datagrid and the default behavior. Odd, huh?

Quite, because here's what I found in Bernd's post:

    set the behavior of the behavior of the behavior of group \
      "datagrid 1" to the long id of button "myButtonName"

<http://lists.runrev.com/pipermail/use-livecode/2018-July/248461.html>


This is a normal setup:

      [ DataGrid ]
            |
            V
[ Standard DG Behavior ]


The behavior of grp "DataGrid 1" is the standard LC-supplied DG script.

If we set the behavior of the LC-supplied DG script, we get the opposite 
of my diagram:

      [ DataGrid ]
            |
            V
[ Standard DG Behavior ]
            |
            V
    [ Custom Behavior ]


That would produce an overloading of global scope, since the Standard DG 
behavior drives all DGs, and adding a custom behavior to it would then 
also apply to all DGs.

For reference, here's the diagram I've been using to show the desired 
outcome of limited scope:

       [ DataGrid ]
            |
            V
    [ Custom Behavior ]
            |
            V
[ Standard DG Behavior ]


What am I missing?

Are we talking about the same thing, but I'm writing this where the 
message path flows down and you're missing the arrows and 
conceptualizing this as messages flowing up?

If not that, what is it I'm not seeing?

---

On further consideration, there's something even odder in my 
understanding of Bernd's script.  Let me rewrite it with line breaks for 
clarity:

command:    set the behavior \
obj3:          of the behavior \
obj2:          of the behavior \
obj1:          of group "datagrid 1" \
value:            to the long id of button "myButtonName"

That's a three-deep nesting where AFAIK there are only two objects.

A group named "DataGrid 1" is obj1 there.

It's original behavior is the LC-supplied "Standard DG Behavior" - 
that's obj2.

What is obj3, the object assigned as the behavior to the "Standard DG 
Behavior"?

Can't decide if I've had too much coffee here or too little. :)

-- 
  Richard Gaskin
  Fourth World Systems
  Software Design and Development for the Desktop, Mobile, and the Web
  ____________________________________________________________________
  Ambassador at FourthWorld.com                http://www.FourthWorld.com




More information about the use-livecode mailing list