| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> |
| <script:module xmlns:script="http://openoffice.org/2000/script" script:name="table_XCellCursor" script:language="StarBasic"> |
| |
| |
| '************************************************************************* |
| ' |
| ' 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. |
| ' |
| '************************************************************************* |
| |
| |
| |
| |
| |
| ' Be sure that all variables are dimensioned: |
| option explicit |
| |
| '************************************************************************* |
| 'XCellCursor walks in a range of data. That |
| ' means: If you have the range (A1:B10) filled |
| ' with data gotoStart() goes to (A1), gotoEnd() |
| ' goes to (B10). But: you must insite this range. |
| ' If you are in (C3) you will nerver go to (A1). |
| |
| '************************************************************************* |
| |
| |
| |
| |
| |
| |
| Sub RunTest() |
| |
| '************************************************************************* |
| ' INTERFACE: |
| ' com.sun.star.table.XCellCursor |
| '************************************************************************* |
| On Error Goto ErrHndl |
| Dim bOK As Boolean |
| Dim bSupport As Boolean |
| Dim ResetCols As Integer, ResetRows As Long |
| Dim nStartSCol, nStartECol As Integer |
| Dim nStartSRow, nStartERow As Long |
| Dim nNextECol As Integer, nNextERow As Long |
| Dim nEndECol As Integer, nEndERow As Long |
| Dim nPrevECol As Integer, nPrevERow As Long |
| Dim nOffECol As Integer, nOffERow As Long |
| Dim oAddress As Object |
| |
| if hasUnoInterfaces(oObj, "com.sun.star.sheet.XSheetCellCursor") then |
| bSupport = true |
| ResetCols = oObj.getColumns().getCount() |
| ResetRows = oObj.getRows().getCount() |
| else |
| bSupport = false |
| end if |
| |
| Test.StartMethod("gotoStart()") |
| bOK = true |
| oObj.gotoStart() |
| oAddress = oObj.getRangeAddress() |
| nStartSCol = oAddress.StartColumn |
| nStartECol = oAddress.EndColumn |
| nStartSRow = oAddress.StartRow |
| nStartERow = oAddress.EndRow |
| bOK = bOK AND (nStartSCol = nStartECol) AND (nStartSRow = nStartERow) |
| Out.Log("nStartSCol = " & nStartSCol & " nStartECol = " & nStartECol &_ |
| " nStartSRow = " & nStartSRow & " nStartERow = " & nStartERow) |
| Test.MethodTested("gotoStart()", bOK) |
| |
| Test.StartMethod("gotoNext()") |
| bOK = true |
| oObj.gotoNext() |
| oAddress = oObj.getRangeAddress() |
| nNextECol = oAddress.EndColumn |
| nNextERow = oAddress.EndRow |
| bOK = bOK AND ((nNextECol = nStartSCol + 1) OR (nNextERow = nStartSRow + 1)) |
| Out.Log("nNextECol = " & nNextECol & " nNextERow = " & nNextERow) |
| Test.MethodTested("gotoNext()", bOK) |
| |
| Test.StartMethod("gotoEnd()") |
| bOK = true |
| oObj.gotoEnd() |
| oAddress = oObj.getRangeAddress() |
| nEndECol = oAddress.EndColumn |
| nEndERow = oAddress.EndRow |
| bOK = bOK AND ((nEndECol > nStartECol) OR (nEndERow > nStartERow)) |
| Out.Log("nEndSCol = " & nEndECol & " nEndERow = " & nEndERow) |
| Test.MethodTested("gotoEnd()", bOK) |
| |
| Test.StartMethod("gotoPrevious()") |
| bOK = true |
| oObj.gotoPrevious() |
| oAddress = oObj.getRangeAddress() |
| nPrevECol = oAddress.EndColumn |
| nPrevERow = oAddress.EndRow |
| bOK = bOK AND ((nPrevECol < nEndECol) OR (nPrevERow < nEndERow)) |
| Out.Log("nPrevECol = " & nPrevECol & " nPrevERow = " & nPrevERow) |
| Test.MethodTested("gotoPrevious()", bOK) |
| |
| Test.StartMethod("gotoOffset()") |
| bOK = true |
| oObj.gotoStart() |
| oObj.gotoOffset(1,1) |
| oAddress = oObj.getRangeAddress() |
| nOffECol = oAddress.EndColumn |
| nOffERow = oAddress.EndRow |
| bOK = bOK AND (nOffECol = nStartSCol + 1) AND (nOffERow = nStartSRow + 1) |
| Out.Log("nOffECol = " & nOffECol & " nOffERow = " & nOffERow) |
| Test.MethodTested("gotoOffset()", bOK) |
| |
| if bSupport then |
| Out.Log("Reset to old range: " & ResetCols & "," & ResetRows) |
| oObj.collapseToSize(ResetCols, ResetRows) |
| end if |
| |
| Exit Sub |
| ErrHndl: |
| Test.Exception() |
| bOK = false |
| resume next |
| End Sub |
| </script:module> |