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
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to