rather than get the data of the line (unkeyed) can you just grab the index,
and use that to pick out your tooltip?  (barely glanced at this so far, so
i might be way off)

On Wed, Jul 12, 2017 at 10:36 AM, Bob Sneidar via use-livecode <
use-livecode@lists.runrev.com> wrote:

> Great tip! (pun intended)
>
> So here is what I came up with. Keep in mind that tKeyList is a list of
> columns I want in the tooltip. The idea is to present the user with a
> tooltip containing summary information on the datagrid data record. I had
> to prepend a counter to each key so that it would sort based on the order
> of the items in tKeyList. Arrays. SHEESH! Sure would be nice if the keys
> were in the order they were added!
>
> I will probably move the relevant code into another handler in my
> Utilities backscript, then pass the long id of the target, and the key list
> to that handler. I will also probably update this handler so that in the
> event no keylist is passed, I will get the datagrid column labels, and use
> those for a key list.
>
> on mouseEnter
>    local tKeyList
>    wait 1 second with messages
>    put the target into tTargetName
>    put tTargetName into tTarget -- we need to preserver the original name
>
>    if the first word of tTarget is not "field" then
>       pass mouseEnter
>    end if
>
>    put "sitename,addr1,city,state,zip,contactname,contactphone,contactemail,"
> into tKeyList
>    put "itname,itphone,itemail" after keyList
>    replace quote with empty in tTargetName
>    put the last word of tTargetName into tLine
>    put the dgDataOfLine [tLine] of me into aLineData
>
>    repeat for each item tKey in tKeyList
>       add 1 to tCounter
>       put aLineData [tKey] into aRecordData [tCounter & ". " & tKey]
>    end repeat
>
>    put arrayToText(aRecordData, "record") into tText
>    sort lines of tText
>    set the tooltip of tTarget to tText
>    show the tooltip of tTarget
>    breakpoint
>    pass mouseEnter
> end mouseEnter
>
> function arrayToText aArrayData, pFormat, pStripRecordKeys
>     if aArrayData is not an array then
>         put "ERROR: Data passed is not an array!" into theValue
>         return theValue
>     end if
>
>     if pStripRecordKeys is not in "true|false" then put false into
> pStripRecordKeys
>     -- sort tArrayKeys ascending
>
>     -- may be an array of values
>     put the keys of aArrayData into tArrayKeys
>     sort lines of tArrayKeys numeric ascending
>     put line 1 of tArrayKeys is 0 into tHasHeader
>
>     -- convert single array to numeric array of arrays
>     if line 1 of tArrayKeys is not a number then
>         put aArrayData into aTempArray [1]
>         put aTempArray into aArrayData
>         put the keys of aArrayData into tArrayKeys
>     end if
>
>     switch pFormat
>         case "record"
>             repeat for each line tArrayKey in tArrayKeys
>                 put aArrayData [tArrayKey] into aArrayRecord
>                 put the keys of aArrayRecord into tColumnKeys
>
>                 repeat for each line tColumnKey in tColumnKeys
>                     put tColumnKey & ": " & aArrayRecord [tColumnKey] & cr
> after tValue
>                 end repeat
>             end repeat
>             break
>         case "table"
>             -- table header
>             if not tHasHeader then put cr into tValue
>
>             repeat for each line tArrayKey in tArrayKeys
>                 add 1 to tCount
>                 put aArrayData [tArrayKey] into aArrayRecord
>                 put the keys of aArrayRecord into tColumnKeys
>                 sort lines of tColumnKeys numeric ascending
>
>                 repeat for each line tColumnKey in tColumnKeys
>                     if pStripRecordKeys and (char 1 of tColumnKey is "@")
> then next repeat
>
>                     if tCount = 1 and not tHasHeader then put tColumnKey &
> tab after line 1 of tValue
>                     put aArrayRecord [tColumnKey] & tab after tValue
>                 end repeat
>
>                 put cr into last char of tValue
>             end repeat
>             break
>     end switch
>
>     return tValue
> end arrayToText
>
> Bob S
>
>
> > On Jul 11, 2017, at 19:09 , Mike Bonner via use-livecode <
> use-livecode@lists.runrev.com> wrote:
> >
> > There should be a couple ways.. Assuming the tooltip data and the
> displayed
> > data are already associated, you can do as suggested and pass in the
> popop
> > information as part of the dgdata.. Then in the fillindata you 'set the
> > tooltip of field 1 of me to ... the data that was passed in with the
> array.
> >  To do this though i _Think_ you'd need a custom behavior for every
> > column.
> >
> > To get around this, you could use a mouseenter in the script of the
> > datagrid itself that does something like..
> >
> > on mouseenter
> >    get the text of the target
> >    -- then use the text of the target to look up your tooltip data and..
> >   set the tooltip of the target to "whateveryouwant"
> >
> > end mouseenter
> >
> > i tested by setting the tooltip to a random number and it seems to work
> > fine.
> >
> > If you're using a form rather than a grid, its much easier, just use the
> > first method in the behavior script to set whatever tooltips you like as
> > part of the fillindata.   A single script edit to handle all tooltips.
>
>
> _______________________________________________
> 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

Reply via email to