Hello,
ich work with a listener in Calc, my code is:
Global y()
Global Listener As Object
Global View As Object
Sub Listener_registrieren()
Dim Range_dummy() As New com.sun.star.table.CellRangeAddress
blattzahl = ThisComponent.Sheets().Count
Redim y(1, blattzahl-1)
For i = 0 To blattzahl-1
y(0, i) = ThisComponent.Sheets(i).Name
y(1, i) = ThisComponent.Sheets(i).getPrintAreas()
x()=y(1, i)
'aktives Sheet berücksichtigen
If ThisComponent.Sheets(i).Name <>
ThisComponent.CurrentController.getActiveSheet.Name Then
ThisComponent.Sheets(i).SetPrintAreas(Range_dummy())
End If
Next i
View = ThisComponent.getCurrentController
Listener = CreateUnoListener( "listen_",
"com.sun.star.sheet.XActivationEventListener" )
View.addActivationEventListener(Listener)
End Sub
Sub Listener_entfernen()
blattzahl = ThisComponent.Sheets().Count
For i = 0 To blattzahl-1
For j = 0 To UBOUND(y())
If y(0, j) = ThisComponent.Sheets(i).Name Then
x() = y(1, j)
ThisComponent.Sheets(i).SetPrintAreas(x())
End If
Next j
Next i
oDocView.removeActivationEventListener(oListener)
End Sub
Sub listen_activeSpreadsheetChanged(oEvent)
Dim Range_dummy() As New com.sun.star.table.CellRangeAddress
blattzahl = ThisComponent.Sheets().Count
For i = 0 to blattzahl-1
ThisComponent.Sheets(i).SetPrintAreas(Range_dummy())
Next i
aktives_blatt = ThisComponent.CurrentController.getActiveSheet.Name
'zweite Array-Dimension verwenden
For i = 0 To UBOUND(y(), 2)
If y(0, i) = aktives_blatt Then
x() = y(1, i)
ThisComponent.CurrentController.getActiveSheet.SetPrintAreas(x())
End If
Next i
End Sub
OK, works fine - but when the listener is registered and i enable the
print preview (in german: Datei-Seitenansicht), then OOo is crashed in
the moment when i leave the print preview (in german: Seitenansicht
schliessen).
What is my mistake?
Regards
Jörg
OOo 2.0.4 (german) and MS Windows 2000
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]