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