I saw this originally and meant to dig a bit. Sorry for causing additional work for you. Here is a widget script that does pretty much what you are doing but leverages a way of array access that isn’t obvious.
https://github.com/bwmilby/DocEditorPlus/blob/master/DocEditorPlus_Scripts/stack_DocEditorPlus_widget_id_1008.livecodescript You should not need to use a case statement. In my case the value was HTML in one case but plain text otherwise. It is part of a more involved stack, but the card with this widget may be helpful for your purposes. Thanks, Brian Sent from my iPhone > On Dec 21, 2021, at 6:38 AM, Keith Clarke via use-livecode > <use-livecode@lists.runrev.com> wrote: > > Hi folks, > For future reference, below is how I managed to get this sorted. The solution > seems rather ugly, but it works for the fixed depth of Tree View data I’m > interested in. > > The root cause seems to be down to the way LiveCode handles array keys passed > in from variables. It doesn't seem possible to define a complete > multidimensional array in as a text string (as one might build URLs with > parameters). Rather, variables seem to be recognised and processed only if > passed in for each individual array key, within its square brackets. > Furthermore, the square brackets seem to need to be present in the markup of > the array access call - hence the ugly switch statement with explicit cases > for each level of Tree View depth rather than something more dynamic & > generic... > on hiliteChanged > > put the arrayData of control "Tree" into tTreeData > > put the hilitedElement of control "Tree" into tHilitedElement > > // Identify element depth > > put the number of items in tHilitedElement into tDepth > > put 0 into tLevelCount > > repeat for each item tKey in tHilitedElement > > add 1 to tLevelCount > > put tKey into tLevel[tLevelCount] > > put "[tLevel[" & tLevelCount & "]]" after tElement > > end repeat > > // Build array key to show element value in field > > switch tDepth > > case 1 > > put tTreeData[tLevel[1]] into field "Test" > > break > > case 2 > > put tTreeData[tLevel[1]][tLevel[2]] into field "Test" > > break > > case 3 > > put tTreeData[tLevel[1]][tLevel[2]][tLevel[3]] into field "Test" > > break > > end switch > > end hiliteChanged > > I’m sure the experienced developers here would find cleaner ways to achieve > this but this hack works and I can get back to evaluating the data accessible > from the PDF widget! :) > > Best, > Keith > >> On 20 Dec 2021, at 21:13, Keith Clarke via use-livecode >> <use-livecode@lists.runrev.com> wrote: >> >> I’m using the Tree View widget to provide a quick and dirty read-only >> display of the various arrays of information that can be extracted from the >> PDF Widget. >> >> Each PDF page contains too much text to read & understand within the >> constraints of a single line in a Tree View control. So, on highlighting an >> element in the Tree View, I want to display its value - such as >> arrayData[“Pages”][“1”][“text”] - into a field to read the detail extracted. >> (Currently I’m putting it into the message box as an interim step, as I tend >> to build & debug my scripts line by line and this is as far as I’ve got!) >> >> I may have misread the docs but it seems that when a Tree View element is >> hilited, one doesn’t get immediate access to the element’s value. Instead, >> one has to jump through hoops, by handling the hilitedElement, which returns >> the nested keys of the element. So, I’m simply trying to convert this >> comma-separated list to an array reference, so that I can get the value >> associated with this key. >> >> If I’ve missed a simple means to access the Tree View element’s value >> directly ‘on click', I’ll gladly change course! >> Best, >> Keith >> >>>> On 20 Dec 2021, at 20:46, J. Landman Gay via use-livecode >>>> <use-livecode@lists.runrev.com> wrote: >>> >>> I'm confused about what the goal is. The hilitedElement contains the text >>> of the selection. The array is already in place, so you don't really need >>> to add to it. >>> >>> The reason you're seeing text in the message box is because the last line >>> contains an unspecified "put". Without a destination for the "put" it will >>> go automatically to the message box. If you want to work with it, you'd >>> need to put the value into a variable. >>> >>> What's the purpose of the concatenation, and what do you want to do with >>> the selection? >>> >>> On 12/20/21 11:11 AM, Keith Clarke via use-livecode wrote: >>>> Hi folks, >>>> I’m struggling to access the value from a Tree View widget’s data array as >>>> the hilitedElement changes - though I think my issue is more about working >>>> with arrays than the Tree View widget. >>>> The following test script (on the Tree widget) successfully gets the >>>> Tree’s arrayData into tTreeData and creates a ‘correct-looking’ nested >>>> array key syntax for any changing tHilitedElement. >>>> However, the last line displays the tHilitedElement variable string in the >>>> message box rather than concatenating it to tTreeData as the nested key to >>>> return the element’s value. >>>> on hiliteChanged >>>> put the hilitedElement of me into tHilitedElement >>>> if char -1 of tHilitedElement is comma then delete char -1 of >>>> tHilitedElement >>>> replace comma with quote & "][" & quote in tHilitedElement >>>> put "[" & quote before tHilitedElement >>>> put quote & "]" after tHilitedElement >>>> put the arrayData of me into tTreeData >>>> put tTreeData & tHilitedElement >>>> end hiliteChanged >>>> I’ve tried various forms of brackets around the tHilitedElement variable >>>> containing the nested key string with no success - what am I doing wrong? >>>> TIA. >>>> Best, >>>> Keith >>>> _______________________________________________ >>>> 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 >>> >>> >>> -- >>> Jacqueline Landman Gay | jac...@hyperactivesw.com >>> HyperActive Software | http://www.hyperactivesw.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 >> >> >> _______________________________________________ >> 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