Horizontal/Vertical Scroll Bar
If the visible area in a dialog is smaller than the displayable content, the scroll bar control com.sun.star.awt.UnoControlScrollBar provides navigation through the content by scrolling horizontally or vertically. In addition, the scroll bar control is used to provide scrolling to controls that do not have a built-in scroll bar.
The orientation of a scroll bar is specified by the Orientation
property and can be horizontal or vertical. A scroll bar has a thumb (scroll box) that the user can drag with the mouse to any position along the scroll bar. The position of the thumb is controlled by the ScrollValue
property. For a horizontal scroll bar, the left-most position corresponds to the minimum scroll value of 0 and the right-most position to the maximum scroll value defined by the ScrollValueMax
property. A scroll bar also has arrows at its end that when clicked or held, incrementally moves the thumb along the scroll bar to increase or decrease the scroll value. The change of the scroll value per mouse click on an arrow is specified by the LineIncrement
property. When clicking in a scroll bar in the region between the thumb and the arrows, the scroll value increases or decreases by the value set for the BlockIncrement
property. The thumb position represents the portion of the displayable content that is currently visible in a dialog. The visible size of the thumb is set by the VisibleSize
property and represents the percentage of the currently visible content and the total displayable content.
oScrollBarModel = oDialog.Model.ScrollBar1
oScrollBarModel.ScrollValueMax = 100
oScrollBarModel.BlockIncrement = 20
oScrollBarModel.LineIncrement = 5
oScrollBarModel.VisibleSize = 20
The scroll bar control uses the adjustment event com.sun.star.awt.AdjustmentEvent to monitor the movement of the thumb along the scroll bar. In an event handler for adjustment events the developer may change the position of the visible content on the dialog as a function of the ScrollValue
property. In the following example, the size of a label field exceeds the size of the dialog. Each time the user clicks on the scrollbar, the macro AdjustmentHandler()
is called and the position of the label field in the dialog is changed according to the scroll value.
Sub AdjustmentHandler()
Dim oLabelModel As Object
Dim oScrollBarModel As Object
Dim ScrollValue As Long, ScrollValueMax As Long
Dim VisibleSize As Long
Dim Factor As Double
Static bInit As Boolean
Static PositionX0 As Long
Static Offset As Long
REM get the model of the label control
oLabelModel = oDialog.Model.Label1
REM on initialization remember the position of the label control and calculate offset
If bInit = False Then
bInit = True
PositionX0 = oLabelModel.PositionX
OffSet = PositionX0 + oLabelModel.Width - (oDialog.Model.Width - Border)
End If
REM get the model of the scroll bar control
oScrollBarModel = oDialog.Model.ScrollBar1
REM get the actual scroll value
ScrollValue = oScrollBarModel.ScrollValue
REM calculate and set new position of the label control
ScrollValueMax = oScrollBarModel.ScrollValueMax
VisibleSize = oScrollBarModel.VisibleSize
Factor = Offset / (ScrollValueMax - VisibleSize)
oLabelModel.PositionX = PositionX0 - Factor * ScrollValue
End Sub
Content on this page is licensed under the Public Documentation License (PDL). |