Proposed update to datagrid library

Paul Dupuis paul at researchware.com
Wed Jul 31 15:20:57 EDT 2024


My Datagrid skills are not great, but i thought the thedgIndexes 
ofgroup"DataGrid" The Dictionary says "Returns the internal list of 
indexes in the order in which they appear in the data grid"
You also have the dgIndexOfLine[pLine] to get the index of the line 
(hilited line or next line or whatever). Then find the index returned by 
dgIndexOfLine in the dgIndexes, which will return a line number in the 
list of indexes and then add 1 to that to the the line in the dgIndexes 
of the next index.


On 7/31/2024 2:29 PM, Bob Sneidar via use-livecode wrote:
> <sigh> never mind. I just realized that if the datagrid gets re-sorted, there IS NO WAY to determine the next visible line in a datagrid. Kinda sucks.
>
> Bob S
>
>
>> On Jul 31, 2024, at 11:01 AM, Bob Sneidar via use-livecode<use-livecode at lists.runrev.com>  wrote:
>>
>> Hi all.
>>
>> Has anyone tried to determine the index of the next line of a datagrid? It’s not as straightforward as you might think. When data is first loaded into a datagrid, the dgIndexes are only going to be in numeric order if the sort order of the datagrid is the same as the data you are loading. Otherwise, the indexes will be all mixed up, but the dgLines of the datagrid will ALWAYS be in the order of the visible rows.
>>
>> Sure you can just add one to the current dgHilitedLine, but what if you want to know the index of the next line just before deleting the current one? You cannot delete the line first because then the line numbers change, and there won’t be another line hilited until your code sets it.
>>
>> And while there is a dgIndexOfLine property built in, there is no dgLineOfIndex! Not only that, but there is a dgIndexes property, but there is no dgLines property! How odd is that?? The goal is to determine the index of the next visible line where the line numbers are no longer sequential.
>>
>> So I wrote some very simple virtual properties that ought to be a part of the datagrid library. You can put these in the script of a datagrid itself, or if you are brave enough to use the inline behaviors feature of datagrids as I do, you can put them in your own datagrid custom library. But really they belong in the built-in datagrid library itself. They are:
>>
>> getProp dgNextIndexOfLine [tLine]
>>    put tLine +1 into tNewLine
>>
>>    if tNewLine > the dgNumberOfLines of me then
>>       put the dgIndexOfLine [tLine] of me into tIndex
>>    else
>>       put the dgIndexOfLine [tNewLine] of me into tIndex
>>    end if
>>
>>    return tIndex
>> end dgNextIndexOfLine
>>
>> getProp dgPrevIndexOfLine [tLine]
>>    put tLine -1 into tNewLine
>>
>>    if tNewLine <1 then
>>       put the dgIndexOfLine [tLine] of me into tIndex
>>    else
>>       put the dgIndexOfLine [tNewLine] of me into tIndex
>>    end if
>>
>>    return tIndex
>> end dgPrevIndexOfLine
>>
>> You are welcome. :-)
>>
>> Bob S
>>
>> _______________________________________________
>> 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