'************************************************************************* ' ' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ' ' Copyright 2008 by Sun Microsystems, Inc. ' ' OpenOffice.org - a multi-platform office productivity suite ' ' $RCSfile: table_XCellCursor.xba,v $ ' ' $Revision: 1.3 $ ' ' This file is part of OpenOffice.org. ' ' OpenOffice.org is free software: you can redistribute it and/or modify ' it under the terms of the GNU Lesser General Public License version 3 ' only, as published by the Free Software Foundation. ' ' OpenOffice.org is distributed in the hope that it will be useful, ' but WITHOUT ANY WARRANTY; without even the implied warranty of ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ' GNU Lesser General Public License version 3 for more details ' (a copy is included in the LICENSE file that accompanied this code). ' ' You should have received a copy of the GNU Lesser General Public License ' version 3 along with OpenOffice.org. If not, see ' ' for a copy of the LGPLv3 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