| <?xml version="1.0" encoding="UTF-8"?> |
| <!--*********************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| ***********************************************************--> |
| <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> |
| <script:module xmlns:script="http://openoffice.org/2000/script" script:name="ScrollBar" script:language="StarBasic">REM ***** BASIC ***** |
| |
| Dim oDialog As Object |
| Const Border = 5 |
| |
| Sub Main() |
| |
| Dim oLibContainer As Object, oLib As Object |
| Dim oInputStreamProvider As Object |
| Dim oDialogModel As Object |
| Dim oScrollBarModel As Object |
| Dim oLabelModel As Object |
| Dim sLabel As String |
| Dim VisibleSize As Double |
| |
| Const sLibName = "ToolkitControls" |
| Const sDialogName = "ScrollBarDlg" |
| |
| REM load/get library and input stream provider |
| oLibContainer = DialogLibraries |
| oLibContainer.loadLibrary( sLibName ) |
| oLib = oLibContainer.getByName( sLibName ) |
| oInputStreamProvider = oLib.getByName( sDialogName ) |
| |
| REM create dialog control |
| oDialog = CreateUnoDialog( oInputStreamProvider ) |
| |
| REM set the label |
| sLabel = "This Text exceeds the visible area of the dialog and can be" |
| sLabel = sLabel + " scrolled horizontally by clicking on the scroll bar." |
| oDialogModel = oDialog.Model |
| oLabelModel = oDialogModel.Label1 |
| oLabelModel.Label = sLabel |
| |
| REM scroll bar settings |
| oScrollBarModel = oDialog.Model.ScrollBar1 |
| oScrollBarModel.ScrollValueMax = 100 |
| VisibleSize = (oDialogModel.Width - Border - oLabelModel.PositionX) / oLabelModel.Width |
| VisibleSize = VisibleSize * oScrollBarModel.ScrollValueMax |
| oScrollBarModel.VisibleSize = VisibleSize |
| oScrollBarModel.BlockIncrement = oScrollBarModel.VisibleSize |
| oScrollBarModel.LineIncrement = oScrollBarModel.BlockIncrement / 20 |
| |
| REM show the dialog |
| oDialog.execute() |
| |
| End Sub |
| |
| 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 |
| </script:module> |