scrolling groups programatically?!

Chipp Walters chipp at chipp.com
Tue Oct 16 17:13:07 EDT 2007


Trevor,

Thanks for posting these. I've heard Jerry mention them some time ago.
I'll be sure and add them to my Groups management library.

-Chipp

On 10/16/07, Trevor DeVore <lists at mangomultimedia.com> wrote:
> On Oct 16, 2007, at 4:13 PM, Andre Garzia wrote:
>
> > its me again, I am very verbose today. I have a big group whose
> > rect is set
> > to a small area of the stack. I can use the scrollbars that rev
> > automatically adds to it to scroll the group. Now, if I want to
> > code my way
> > to scroll the group, how should I proceed? I have a find function
> > that finds
> > the correct group element that should be displayed, I want to
> > scroll so this
> > element becomes visible...
>
> Andre,
>
> Here are some general purpose handlers I use to scroll coordinates/
> rects into view whether in fields or groups. The handler names should
> be self-explanatory.
>
> Hope this helps.
>
> --
> Trevor DeVore
> Blue Mango Learning Systems
> www.bluemangolearning.com    -    www.screensteps.com
>
>
>
>
> --> HScroll/Vscroll
>
>
> command scrollRectVerticallyIntoViewIfOffScreen pControl, pRect, pBuffer
>      put the rect of pControl into theMaskRect
>
>      if pBuffer is not an integer then put 0 into pBuffer
>
>      if item 4 of pRect > item 2 of theMaskRect and item 2 of pRect <
> item 2 of theMaskRect then
>          ## top is clipped off
>          scrollYCoordinateToTopOfControl pControl, item 2 of pRect +
> the vscroll of pControl - item 2 of theMaskRect + pBuffer
>      else if item 2 of pRect < item 4 of theMaskRect and item 4 of
> pRect > item 4 of theMaskRect then
>          ## bottom is clipped off
>          scrollYCoordinateToBottomOfControl pControl, item 4 of pRect
> + the vscroll of pControl - item 2 of theMaskRect - pBuffer
>      else if item 2 of pRect >= item 4 of theMaskRect or item 4 of
> pRect <= item 2 of theMaskRect then
>          ## entire rect is clipped off
>          if item 2 of pRect >= item 4 of theMaskRect then
>              scrollYCoordinateToBottomOfControl pControl, item 4 of
> pRect + the vscroll of pControl - item 2 of theMaskRect - pBuffer
>          else
>              scrollYCoordinateToTopOfControl pControl, item 2 of
> pRect + the vscroll of pControl - item 2 of theMaskRect + pBuffer
>          end if
>      end if
> end scrollRectVerticallyIntoViewIfOffScreen
>
>
> command scrollRectHorizontallyIntoViewIfOffScreen pControl, pRect,
> pBuffer
>      put the rect of pControl into theMaskRect
>
>      if pBuffer is not an integer then put 0 into pBuffer
>
>      if item 3 of pRect > item 1 of theMaskRect and item 1 of pRect <
> item 1 of theMaskRect then
>          ## left is clipped off
>          scrollXCoordinateToLeftOfControl pControl, item 1 of pRect +
> the hscroll of pControl - item 1 of theMaskRect + pBuffer
>      else if item 1 of pRect < item 3 of theMaskRect and item 3 of
> pRect > item 3 of theMaskRect then
>          ## right is clipped off
>          scrollXCoordinateToRightOfControl pControl, item 3 of pRect
> + the hscroll of pControl - item 1 of theMaskRect - pBuffer
>      else if item 1 of pRect >= item 3 of theMaskRect or item 3 of
> pRect <= item 1 of theMaskRect then
>          ## entire rect is clipped off
>          if item 1 of pRect >= item 3 of theMaskRect then
>              scrollXCoordinateToRightOfControl pControl, item 3 of
> pRect + the hscroll of pControl - item 1 of theMaskRect - pBuffer
>          else
>              scrollXCoordinateToLeftOfControl pControl, item 1 of
> pRect + the hscroll of pControl - item 1 of theMaskRect + pBuffer
>          end if
>      end if
> end scrollRectHorizontallyIntoViewIfOffScreen
>
>
> command scrollCoordinateToCenterOfControl pControl, pCoordinate
>      lock screen
>      scrollXCoordinateToCenterOfControl pControl, item 1 of pCoordinate
>      scrollYCoordinateToCenterOfControl pControl, item 2 of pCoordinate
>      unlock screen
> end scrollCoordinateToCenterOfControl
>
>
> --> HSCroll
>
> command scrollXCoordinateToCenterOfControl pControl, pXCordinate
>      set the hscroll of pControl to hscrollToPutXCoordinateInCenter
> (pControl, pXCordinate)
> end scrollXCoordinateToCenterOfControl
>
>
> command scrollXCoordinateToLeftOfControl pControl, pXCordinate
>      set the hscroll of pControl to hscrollToPutXCoordinateAtLeft
> (pControl, pXCordinate)
> end scrollXCoordinateToLeftOfControl
>
>
> command scrollXCoordinateToRightOfControl pControl, pXCordinate
>      set the hscroll of pControl to hscrollToPutXCoordinateAtRight
> (pControl, pXCordinate)
> end scrollXCoordinateToRightOfControl
>
>
> function hscrollToPutXCoordinateInCenter pControl, pXCoordinate
>      put the width of pControl into theMaskWidth
>      put the formattedwidth of pControl into theMaxWidth
>      return max(0, min(pXCoordinate + round(theMaskWidth / 2) -
> theMaskWidth, theMaxWidth))
> end hscrollToPutXCoordinateInCenter
>
>
> function hscrollToPutXCoordinateAtLeft pControl, pXCoordinate
>      put the formattedwidth of pControl into theMaxWidth
>      return max(0, min(pXCoordinate, theMaxWidth))
> end hscrollToPutXCoordinateAtLeft
>
>
> function hscrollToPutXCoordinateAtRight pControl, pXCoordinate
>      put the width of pControl into theMaskWidth
>      put the formattedwidth of pControl into theMaxWidth
>      return max(0, min(pXCoordinate - theMaskWidth, theMaxWidth))
> end hscrollToPutXCoordinateAtRight
>
>
> --> VScroll
>
> command scrollYCoordinateToCenterOfControl pControl, pYCoordinate
>      set the vscroll of pControl to vscrollToPutYCoordinateInCenter
> (pControl, pYCoordinate)
> end scrollYCoordinateToCenterOfControl
>
>
> command scrollYCoordinateToTopOfControl pControl, pYCoordinate
>      set the vscroll of pControl to vscrollToPutYCoordinateAtTop
> (pControl, pYCoordinate)
> end scrollYCoordinateToTopOfControl
>
>
> command scrollYCoordinateToBottomOfControl pControl, pYCoordinate
>      set the vscroll of pControl to vscrollToPutYCoordinateAtBottom
> (pControl, pYCoordinate)
> end scrollYCoordinateToBottomOfControl
>
>
> function vscrollToPutYCoordinateInCenter pControl, pYCoordinate
>      put the height of pControl into theMaskHeight
>      put the formattedheight of pControl into theMaxHeight
>      return max(0, min(pYCoordinate + round(theMaskHeight / 2) -
> theMaskHeight, theMaxHeight))
> end vscrollToPutYCoordinateInCenter
>
>
> function vscrollToPutYCoordinateAtTop pControl, pYCoordinate
>      put the formattedheight of pControl into theMaxHeight
>      return max(0, min(pYCoordinate, theMaxHeight))
> end vscrollToPutYCoordinateAtTop
>
>
> function vscrollToPutYCoordinateAtBottom pControl, pYCoordinate
>      put the height of pControl into theMaskHeight
>      put the formattedheight of pControl into theMaxHeight
>      return max(0, min(pYCoordinate - theMaskHeight, theMaxHeight))
> end vscrollToPutYCoordinateAtBottom
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
>
>



More information about the use-livecode mailing list