Re: Datagrid: multiple hilites
On Oct 17, 2009, at 7:02 PM, David Bovill wrote: I checked again Trevor. It makes sense that it does not work in cases where the controls are not cached - where it is broken is when the controls are cached but you try to get: the dgRectOfIndex [1] of dataGrid and the controls are scrolled heavily, so that the invisible row view would be above the top of the card. In these cases it does not return the correct geometry as the invisible row view is limited to the top of the screen and no its true negative y values. These means that if you try to scroll to the first row it does not work. I just performed the following test and the dgRectOfIndex[1] returned the proper result. 1) Created new Data Grid. 2) Changed style to form 3) Turned off fixed row height 4) Turned on cache controls 5) Turned off persistent data 6) Positioned Data Grid at 0,0 I then added about 50 or so lines to the Data Grid. Here are results: put the dgRectOfIndex[1] of group 1 0,0,233,21 I then scrolled to the bottom of the Data Grid: put the dgRectOfIndex[1] of group 1 0,-451,233,-430 I then tried scrolling the first index back into view and it worked: dispatch ScrollRectIntoView to group 1 with the dgRectOfIndex[1] of group 1 Just let me know what steps you are taking and what you are seeing. If there is a bug that is the only way I can track it down. -- Trevor DeVore Blue Mango Learning Systems ScreenSteps: http://www.screensteps.com Releasable Revolution Resources for Developers: http://revolution.bluemangolearning.com ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Datagrid: multiple hilites
Whoa! So sorry. I really checked this very thoroughly or so I thought. I turns out not to a datagrid issue, but mine - or should that be a Rev bug??? Goes like this: I was relying on a handler I've had for decades rect_CreateTransparentButton which does what is say on the tin, creates a semi-transparent button at the rect you specify, so you can see the area - one click an it is gone. OK - but :) set the rect of transparentButton to someRect show transparentButton that's it! That's the problem ??? The script creates the button with create invisible button someName, does some stuff, sets the rect and shows the button - so? Well setting the rect of an invisible object off screen does not work?!? It gets limited to the screen rect. OK - it's old code and it would be better to set the templatebutton and then reset it - but still I can feel good about myself and waisting Trevors time right? This is surely a Rev bug :) 2009/10/20 Trevor DeVore li...@mangomultimedia.com On Oct 17, 2009, at 7:02 PM, David Bovill wrote: I checked again Trevor. It makes sense that it does not work in cases where the controls are not cached - where it is broken is when the controls are cached but you try to get: the dgRectOfIndex [1] of dataGrid and the controls are scrolled heavily, so that the invisible row view would be above the top of the card. In these cases it does not return the correct geometry as the invisible row view is limited to the top of the screen and no its true negative y values. These means that if you try to scroll to the first row it does not work. I just performed the following test and the dgRectOfIndex[1] returned the proper result. 1) Created new Data Grid. 2) Changed style to form 3) Turned off fixed row height 4) Turned on cache controls 5) Turned off persistent data 6) Positioned Data Grid at 0,0 I then added about 50 or so lines to the Data Grid. Here are results: put the dgRectOfIndex[1] of group 1 0,0,233,21 I then scrolled to the bottom of the Data Grid: put the dgRectOfIndex[1] of group 1 0,-451,233,-430 I then tried scrolling the first index back into view and it worked: dispatch ScrollRectIntoView to group 1 with the dgRectOfIndex[1] of group 1 Just let me know what steps you are taking and what you are seeing. If there is a bug that is the only way I can track it down. -- Trevor DeVore Blue Mango Learning Systems ScreenSteps: http://www.screensteps.com Releasable Revolution Resources for Developers: http://revolution.bluemangolearning.com ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Datagrid: multiple hilites
On Oct 20, 2009, at 1:18 PM, David Bovill wrote: Whoa! So sorry. I really checked this very thoroughly or so I thought. I turns out not to a datagrid issue, but mine - or should that be a Rev bug??? Goes like this: I was relying on a handler I've had for decades rect_CreateTransparentButton which does what is say on the tin, creates a semi-transparent button at the rect you specify, so you can see the area - one click an it is gone. OK - but :) set the rect of transparentButton to someRect show transparentButton that's it! That's the problem ??? The script creates the button with create invisible button someName, does some stuff, sets the rect and shows the button - so? Well setting the rect of an invisible object off screen does not work?!? It gets limited to the screen rect. OK - it's old code and it would be better to set the templatebutton and then reset it - but still I can feel good about myself and waisting Trevors time right? This is surely a Rev bug :) No worries. It was a simple enough test to run and I found and fixed an unrelated bug while doing it :-) -- Trevor DeVore Blue Mango Learning Systems ScreenSteps: http://www.screensteps.com Releasable Revolution Resources for Developers: http://revolution.bluemangolearning.com ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Datagrid: multiple hilites
Thanks Trevor - silly mistake - maybe that will fix my other problem with scrolling - thanks! The other thing I needed to do was: set the dgProp [animate selections] of dataGrid to false as otherwise the automatic behavior would scroll to the first selected record. These animate features are new undocumented behaviors right? 2009/10/17 Trevor DeVore li...@mangomultimedia.com You are using dgLine with myIndexNum. That should be dgIndex. Does that fix the problem? ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Datagrid: multiple hilites
Here are some handlers that seem to work most of the time. Could be improved by adding shortcut for fixed height rows, and it seems like the geometry gets a little messed up in some circumstances (maybe when adding rows using AddData?) - but it is a start, perhaps the beginning of a feature request? command dg_ScrollToIndexTop pIndexNum, pAnimate put the dgControl of the target into dataGrid if exists(dataGrid) is false then return empty put the dg_IndexScrollTop [pIndexNum] of the target into recordTop if recordTop is a number then if pAnimate is true then dispatch StartScrollAnimation to dataGrid with recordTop else set the dgVScroll of dataGrid to recordTop end if end if return recordTop end dg_ScrollToIndexTop getprop dg_IndexScrollTop [pIndexNum] if pIndexNum = 0 then return 0 put the dgControl of the target into dataGrid if exists(dataGrid) is false then return empty if the dgprop [cache controls] of dataGrid is false then return empty put 0 into recordTop repeat with someNum = 1 to pIndexNum put the dgRectOfIndex [someNum] of dataGrid into rectOfIndex put item 4 of rectOfIndex - item 2 of rectOfIndex into recordHeight add recordHeight to recordTop end repeat subtract 3 from recordTop -- just a tweek to show a margin return recordTop end dg_IndexScrollTop ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Datagrid: multiple hilites
On Oct 17, 2009, at 7:06 AM, David Bovill wrote: Thanks Trevor - silly mistake - maybe that will fix my other problem with scrolling - thanks! The other thing I needed to do was: set the dgProp [animate selections] of dataGrid to false as otherwise the automatic behavior would scroll to the first selected record. These animate features are new undocumented behaviors right? Not new. Just undocumented. There is only the one property that just animates selection changes. -- Trevor DeVore Blue Mango Learning Systems ScreenSteps: http://www.screensteps.com Releasable Revolution Resources for Developers: http://revolution.bluemangolearning.com ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Datagrid: multiple hilites
On Oct 17, 2009, at 9:54 AM, David Bovill wrote: Here are some handlers that seem to work most of the time. Could be improved by adding shortcut for fixed height rows, and it seems like the geometry gets a little messed up in some circumstances (maybe when adding rows using AddData?) - but it is a start, perhaps the beginning of a feature request? command dg_ScrollToIndexTop pIndexNum, pAnimate There are some scrolling handlers that are documented: ScrollIndexIntoView/ScrollLineIntoView There is also an undocumented ScrollRectIntoView command you can find in the Data Grid button. You might want to take a look at those. -- Trevor DeVore Blue Mango Learning Systems ScreenSteps: http://www.screensteps.com Releasable Revolution Resources for Developers: http://revolution.bluemangolearning.com ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Datagrid: multiple hilites
2009/10/17 Trevor DeVore li...@mangomultimedia.com There are some scrolling handlers that are documented: ScrollIndexIntoView/ScrollLineIntoView There is also an undocumented ScrollRectIntoView command you can find in the Data Grid button. You might want to take a look at those. Thanks - but ScrollRectIntoView would rely on ## See dgRectOfIndex in order to get rect of a control in the data grid. - and this is broken for cases in which the rows are scrolled above the grid (perhaps when they go above the screens top?) -- see the handler below for a temporary fix. getprop dg_ScrollTop [lineNum] if lineNum 2 then return 0 put the dgControl of the target into dataGrid if exists(dataGrid) is false then return empty if the dgprop [fixed row height] of dataGrid is true then -- not tested yet! put the the dgprop [fixed row height] of dataGrid into fixedRowHeight put (lineNum - 1) * fixedRowHeight into scrollTop else get the dgVisibleLines of dataGrid put item 1 of it into firstVizLine put item 2 of it into lastVizLine switch case lineNum firstVizLine if the dgprop [cache controls] of dataGrid is false then return empty put 0 into scrollTop repeat with someLineNum = 1 to lineNum put the dgIndexOfLine [someLineNum] of dataGrid into someIndexNum put the dgRectOfIndex [someIndexNum] of dataGrid into rectOfIndex put item 4 of rectOfIndex - item 2 of rectOfIndex into recordHeight add recordHeight to scrollTop end repeat break default put the dgIndexOfLine [lineNum] of dataGrid into indexNum put the dgRectOfIndex [indexNum] of dataGrid into rectOfIndex put item 2 of rectOfIndex into recordTop if recordTop is empty then -- problem here as the row (record view) does not exist so cannot get its height! return empty end if put recordTop - the top of dataGrid into scrollTop end switch end if subtract 3 from scrollTop -- just a tweek to show a margin return scrollTop end dg_ScrollTop ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Datagrid: multiple hilites
On Oct 17, 2009, at 11:00 AM, David Bovill wrote: Thanks - but ScrollRectIntoView would rely on ## See dgRectOfIndex in order to get rect of a control in the data grid. - and this is broken for cases in which the rows are scrolled above the grid (perhaps when they go above the screens top?) -- see the handler below for a temporary fix. Not broken, just designed for Data Grids where controls are cached. See the note for dgRectOfIndex in the source. This is one reason why it remains undocumented :-) -- Trevor DeVore Blue Mango Learning Systems ScreenSteps: http://www.screensteps.com Releasable Revolution Resources for Developers: http://revolution.bluemangolearning.com ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Datagrid: multiple hilites
I checked again Trevor. It makes sense that it does not work in cases where the controls are not cached - where it is broken is when the controls are cached but you try to get: the dgRectOfIndex [1] of dataGrid and the controls are scrolled heavily, so that the invisible row view would be above the top of the card. In these cases it does not return the correct geometry as the invisible row view is limited to the top of the screen and no its true negative y values. These means that if you try to scroll to the first row it does not work. 2009/10/17 Trevor DeVore li...@mangomultimedia.com On Oct 17, 2009, at 11:00 AM, David Bovill wrote: Thanks - but ScrollRectIntoView would rely on ## See dgRectOfIndex in order to get rect of a control in the data grid. - and this is broken for cases in which the rows are scrolled above the grid (perhaps when they go above the screens top?) -- see the handler below for a temporary fix. Not broken, just designed for Data Grids where controls are cached. See the note for dgRectOfIndex in the source. This is one reason why it remains undocumented :-) ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Datagrid: multiple hilites
I've upgraded to the latest datagrid - fixes the add to end issue reported earlier. So naturally that's led to another one :) I want to allow the user to quickly select multiple lines of a form by clicking on them - with auto select unless you hold down the command key. I scripted a way to do that using the dgHilitedIndex: command tweet_ToggleHilite put the dgControl of me into dataGrid if the dgProp [auto hilite] of dataGrid is false then put the dgLine of me into myIndexNum put the dgHilitedIndex of dataGrid into indexNums set the wholematches to true put itemOffset (myIndexNum, indexNums) into foundItem if foundItem = 0 then if indexNums is empty then put myIndexNum into indexNums else put comma myIndexNum after indexNums end if else -- already hilited delete item foundItem of indexNums end if sort numeric items of indexNums lock screen put the dgControl of me into dataGrid put the dgVScroll of dataGrid into someScroll set the dgHilitedindex of dataGrid to indexNums put indexNums set the dgVScroll of dataGrid to someScroll unlock screen end if end tweet_ToggleHilite However this script only works until, I start adding lines using AddData. Maybe there is a better way? ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Datagrid: multiple hilites
On Oct 16, 2009, at 6:58 PM, David Bovill wrote: command tweet_ToggleHilite put the dgControl of me into dataGrid if the dgProp [auto hilite] of dataGrid is false then put the dgLine of me into myIndexNum put the dgHilitedIndex of dataGrid into indexNums set the wholematches to true put itemOffset (myIndexNum, indexNums) into foundItem if foundItem = 0 then if indexNums is empty then put myIndexNum into indexNums else put comma myIndexNum after indexNums end if else -- already hilited delete item foundItem of indexNums end if sort numeric items of indexNums lock screen put the dgControl of me into dataGrid put the dgVScroll of dataGrid into someScroll set the dgHilitedindex of dataGrid to indexNums put indexNums set the dgVScroll of dataGrid to someScroll unlock screen end if end tweet_ToggleHilite You are using dgLine with myIndexNum. That should be dgIndex. Does that fix the problem? -- Trevor DeVore Blue Mango Learning Systems ScreenSteps: http://www.screensteps.com Releasable Revolution Resources for Developers: http://revolution.bluemangolearning.com ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution