Re: Call a function on another card
Yes, but Peter has a single behavior for all his cards, but unique script local variables for each card. He wants those script local variables to be visible to his behavior. In a related note, I want to say again that properties can act as scoped variables using the method I described. So properties of a stack or a card or of anything can have the same names, like tableName for instance for each card displaying data from different SQL tables for instance. A behavior script for all the cards can call a function in the actual script of each card and depending on the card you are on will retrieve the properties specific to that card. A poor man's variable scoping as I have called it before. Bob S > On Feb 23, 2017, at 17:42 , Richard Gaskin via use-livecode > wrote: > > Bob Sneidar wrote: > > > I did a quick little test. The card's script local variables are not > > accessible from the behavior script. > > True, but you may not need to: each object subscribed to a behavior script > maintains its own set of script-local variables. > > -- > Richard Gaskin ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Call a function on another card
Bob Sneidar wrote: > I did a quick little test. The card's script local variables are not > accessible from the behavior script. True, but you may not need to: each object subscribed to a behavior script maintains its own set of script-local variables. -- Richard Gaskin Fourth World Systems Software Design and Development for the Desktop, Mobile, and the Web ambassa...@fourthworld.comhttp://www.FourthWorld.com ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Call a function on another card
Thanks Bob, I’ll look at this more closely. One benefit of using custom properties rather than local variables is that I’ve seen that local variables are sometimes emptied on some script errors when working on a script. Then I have to quit and reload the stack. Peter On Feb 23, 2017, at 3:17 PM, Bob Sneidar via use-livecode wrote: > I did a quick little test. The card's script local variables are not > accessible from the behavior script. > > At this point you might consider using card properties instead. This is what > I have been doing. This way each card can have it's own "variables" in the > form of properties. Then you can have a function in each card script that > returns the value stored in the property: > > function cardProp pPropName > return the pPropName of me > end cardProp > > Booyah. I use this myself. The nice thing about using properties is that if > there is no such property there will not be any error thrown. > > Bob S > > >> On Feb 23, 2017, at 14:56 , Bob Sneidar via use-livecode >> wrote: >> >> I may be mistaken, but I think that script locals are accessible to a >> behavior script. If so, you could keep the script local variables in the >> card, and the handlers in a library or backscript. I will set up a test for >> that. >> >> Bob S >> >> >>> On Feb 23, 2017, at 14:51 , Peter Bogdanoff via use-livecode >>> wrote: >>> >>> Bob, >>> >>> This is a good question. In my case, each card script has script local >>> variables that are used only for that card. >>> >>> In this unusual case (I’m creating a text search method) I need to access >>> the contents of those variables from another stack. >>> >>> I indeed would like to move common handlers to a stack or library script, >>> but these handlers use many local variables relevant to the individual >>> cards. I have not yet thought of a simple way to use common handlers >>> without a LOT of passing of local variable data. >> >> >> ___ >> use-livecode mailing list >> use-livecode@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@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@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Call a function on another card
I did a quick little test. The card's script local variables are not accessible from the behavior script. At this point you might consider using card properties instead. This is what I have been doing. This way each card can have it's own "variables" in the form of properties. Then you can have a function in each card script that returns the value stored in the property: function cardProp pPropName return the pPropName of me end cardProp Booyah. I use this myself. The nice thing about using properties is that if there is no such property there will not be any error thrown. Bob S > On Feb 23, 2017, at 14:56 , Bob Sneidar via use-livecode > wrote: > > I may be mistaken, but I think that script locals are accessible to a > behavior script. If so, you could keep the script local variables in the > card, and the handlers in a library or backscript. I will set up a test for > that. > > Bob S > > >> On Feb 23, 2017, at 14:51 , Peter Bogdanoff via use-livecode >> wrote: >> >> Bob, >> >> This is a good question. In my case, each card script has script local >> variables that are used only for that card. >> >> In this unusual case (I’m creating a text search method) I need to access >> the contents of those variables from another stack. >> >> I indeed would like to move common handlers to a stack or library script, >> but these handlers use many local variables relevant to the individual >> cards. I have not yet thought of a simple way to use common handlers without >> a LOT of passing of local variable data. > > > ___ > use-livecode mailing list > use-livecode@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@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Call a function on another card
I may be mistaken, but I think that script locals are accessible to a behavior script. If so, you could keep the script local variables in the card, and the handlers in a library or backscript. I will set up a test for that. Bob S > On Feb 23, 2017, at 14:51 , Peter Bogdanoff via use-livecode > wrote: > > Bob, > > This is a good question. In my case, each card script has script local > variables that are used only for that card. > > In this unusual case (I’m creating a text search method) I need to access the > contents of those variables from another stack. > > I indeed would like to move common handlers to a stack or library script, but > these handlers use many local variables relevant to the individual cards. I > have not yet thought of a simple way to use common handlers without a LOT of > passing of local variable data. ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Call a function on another card
Bob, This is a good question. In my case, each card script has script local variables that are used only for that card. In this unusual case (I’m creating a text search method) I need to access the contents of those variables from another stack. I indeed would like to move common handlers to a stack or library script, but these handlers use many local variables relevant to the individual cards. I have not yet thought of a simple way to use common handlers without a LOT of passing of local variable data. Instead of local variables, I suppose I could set custom properties in the library stack for each bit of data. But it seems awkward to me to have in the library script: put the FieldTextArray of stack “MLib” into tVar # Stored in a custom property return tVar [“HTML”] then in the card script: set the htmlText of field “Text” to it instead of simply (in the card script): set the htmlText of field “Text” to sFieldTextData [“HTML”] # Card local variable And then, custom properties would have to be emptied after each session. Peter On Feb 23, 2017, at 2:03 PM, Bob Sneidar via use-livecode wrote: > When I encounter situations like these, I begin to ask myself why the handler > is in a card script. If it needs to be accessible from other cards, it should > probably be moved to the stack script, or put into a button and inserted into > front or back. I have 3 buttons I use for this effect: Utilities, Validations > and Database Functions. Utilities and Database functions I insert into back. > The validations I insert into front in case I want to intercept things like > openField or selectionChanged and do things before passing them on. > > Bob S > > >> On Feb 23, 2017, at 13:21 , Peter Bogdanoff via use-livecode >> wrote: >> >> Yes, thank you, that works. I used: >> >> dispatch function "getPageNumber" to card "MITA" of stack "MITA" with tID >> >> What came back was in “the result” >> >> “it” contained “handled” >> >> pb >> >> On Feb 23, 2017, at 12:54 PM, Mike Bonner via use-livecode >> wrote: >> >>> Will this work for you? >>> dispatch function "myFunction" to card "myCard" >>> >>> put the result into tResult >>> >>> Parameters can also be passed using the "with" extension. Unlike the >>> "call", "send" and "value" handlers, the parameters are sent directly to >>> the target handler, rather than being extracted from the string used to >>> call the handler. This negates the need to surround our parameters in >>> quotes and also allows us to pass arrays >>> >>> On Thu, Feb 23, 2017 at 1:32 PM, Peter Bogdanoff via use-livecode < >>> use-livecode@lists.runrev.com> wrote: >>> Hi, I’m reading on http://lessons.livecode.com/m/4071/l/11787-how-to-call-a- function-or-command-in-another-object this: put value("myFunction(hello, world)", group "myGroup" of card "myCard") into tResult I want to use a variable as a parameter instead of “hello, world” as in the page example. These don’t work: put value(“getPageNumber (tID)", card "MITA" of stack "MITA") into tResult put value("getPageNumber" & (tID), card "MITA" of stack "MITA") into tResult What do I do? Peter Bogdanoff ___ use-livecode mailing list use-livecode@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@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@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@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@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Call a function on another card
> On Feb 23, 2017, at 12:32 PM, Peter Bogdanoff via use-livecode > mailto:use-livecode@lists.runrev.com>> wrote: > > put value("myFunction(hello, world)", group "myGroup" of card "myCard") into > tResult > > I want to use a variable as a parameter instead of “hello, world” as in the > page example. You could try: put value(“myFunction(“ & myVar & ")", group "myGroup" of card "myCard") into tResult Paul ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Call a function on another card
When I encounter situations like these, I begin to ask myself why the handler is in a card script. If it needs to be accessible from other cards, it should probably be moved to the stack script, or put into a button and inserted into front or back. I have 3 buttons I use for this effect: Utilities, Validations and Database Functions. Utilities and Database functions I insert into back. The validations I insert into front in case I want to intercept things like openField or selectionChanged and do things before passing them on. Bob S > On Feb 23, 2017, at 13:21 , Peter Bogdanoff via use-livecode > wrote: > > Yes, thank you, that works. I used: > > dispatch function "getPageNumber" to card "MITA" of stack "MITA" with tID > > What came back was in “the result” > > “it” contained “handled” > > pb > > On Feb 23, 2017, at 12:54 PM, Mike Bonner via use-livecode > wrote: > >> Will this work for you? >> dispatch function "myFunction" to card "myCard" >> >> put the result into tResult >> >> Parameters can also be passed using the "with" extension. Unlike the >> "call", "send" and "value" handlers, the parameters are sent directly to >> the target handler, rather than being extracted from the string used to >> call the handler. This negates the need to surround our parameters in >> quotes and also allows us to pass arrays >> >> On Thu, Feb 23, 2017 at 1:32 PM, Peter Bogdanoff via use-livecode < >> use-livecode@lists.runrev.com> wrote: >> >>> Hi, >>> >>> I’m reading on >>> http://lessons.livecode.com/m/4071/l/11787-how-to-call-a- >>> function-or-command-in-another-object >>> >>> this: >>> put value("myFunction(hello, world)", group "myGroup" of card "myCard") >>> into tResult >>> >>> I want to use a variable as a parameter instead of “hello, world” as in >>> the page example. >>> >>> These don’t work: >>> put value(“getPageNumber (tID)", card "MITA" of stack "MITA") into tResult >>> put value("getPageNumber" & (tID), card "MITA" of stack "MITA") into >>> tResult >>> >>> What do I do? >>> >>> Peter Bogdanoff >>> ___ >>> use-livecode mailing list >>> use-livecode@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@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@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@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Call a function on another card
Yes, thank you, that works. I used: dispatch function "getPageNumber" to card "MITA" of stack "MITA" with tID What came back was in “the result” “it” contained “handled” pb On Feb 23, 2017, at 12:54 PM, Mike Bonner via use-livecode wrote: > Will this work for you? > dispatch function "myFunction" to card "myCard" > > put the result into tResult > > Parameters can also be passed using the "with" extension. Unlike the > "call", "send" and "value" handlers, the parameters are sent directly to > the target handler, rather than being extracted from the string used to > call the handler. This negates the need to surround our parameters in > quotes and also allows us to pass arrays > > On Thu, Feb 23, 2017 at 1:32 PM, Peter Bogdanoff via use-livecode < > use-livecode@lists.runrev.com> wrote: > >> Hi, >> >> I’m reading on >> http://lessons.livecode.com/m/4071/l/11787-how-to-call-a- >> function-or-command-in-another-object >> >> this: >> put value("myFunction(hello, world)", group "myGroup" of card "myCard") >> into tResult >> >> I want to use a variable as a parameter instead of “hello, world” as in >> the page example. >> >> These don’t work: >> put value(“getPageNumber (tID)", card "MITA" of stack "MITA") into tResult >> put value("getPageNumber" & (tID), card "MITA" of stack "MITA") into >> tResult >> >> What do I do? >> >> Peter Bogdanoff >> ___ >> use-livecode mailing list >> use-livecode@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@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@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Call a function on another card
Will this work for you? dispatch function "myFunction" to card "myCard" put the result into tResult Parameters can also be passed using the "with" extension. Unlike the "call", "send" and "value" handlers, the parameters are sent directly to the target handler, rather than being extracted from the string used to call the handler. This negates the need to surround our parameters in quotes and also allows us to pass arrays On Thu, Feb 23, 2017 at 1:32 PM, Peter Bogdanoff via use-livecode < use-livecode@lists.runrev.com> wrote: > Hi, > > I’m reading on > http://lessons.livecode.com/m/4071/l/11787-how-to-call-a- > function-or-command-in-another-object > > this: > put value("myFunction(hello, world)", group "myGroup" of card "myCard") > into tResult > > I want to use a variable as a parameter instead of “hello, world” as in > the page example. > > These don’t work: > put value(“getPageNumber (tID)", card "MITA" of stack "MITA") into tResult > put value("getPageNumber" & (tID), card "MITA" of stack "MITA") into > tResult > > What do I do? > > Peter Bogdanoff > ___ > use-livecode mailing list > use-livecode@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@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode