CALC: Grafik löschen lässt OO abstürzen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Newbiebuh2010
*
Beiträge: 17
Registriert: Mo, 10.05.2010 19:26

CALC: Grafik löschen lässt OO abstürzen

Beitrag von Newbiebuh2010 »

Hallo, alle zusammen.
Ich habe mal wieder ein kleines Problemchen, bei dem ich nicht erkennen kann, wo das Fehlerteufelchen sitzt.

Folgendes Makro, ausgelöst durch Klick auf eine Schaltfläche, öffnet zunächst einen Datei-Auswahldialog zum Einfügen einer Grafik.
Wenn das eingefügte Bild bestimmte Maße überschreitet, soll es nicht skaliert, sondern nach einem Hinweis wieder gelöscht werden.

Das funktioniert auch.
ABER:
Sobald die Grafik entfernt wurde, stürzt OO komplett ab !
Beim ersten Mal konnte ich OO erst nach einem Reboot wieder ausführen.

Ausführung in OO 3.0. CALC unter Windows Vista.
Hier der Code:

Code: Alles auswählen

Sub BildEin
DialogOpen=createunoservice("com.sun.star.ui.dialogs.FilePicker")
with DialogOpen
	.setMultiSelectionMode(false)
	.setDisplayDirectory(converttourl("c:\test\bilder"))
	.setTitle("Bitte Datei auswählen:")
end with
Ausgabe = DialogOpen.execute
if Ausgabe = 0 Then goto Ende

'convert-Befehl nur, weil der Name noch weiter verarbeitet wird:
     FileName = convertfromurl(DialogOpen.Files(0))

'ausgewählte Grafik einfügen:
     dim document   as object
     dim dispatcher as object
     document   = ThisComponent.CurrentController.Frame
     dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
     dim args1(2) as new com.sun.star.beans.PropertyValue
     args1(0).Name = "FileName"
     args1(0).Value = converttourl(FileName)
     args1(2).Name = "AsLink"
     args1(2).Value = false
     dispatcher.executeDispatch(document, ".uno:InsertGraphic", "", 0, args1())

'zu einem späteren Zeitpunkt Grafik suchen und Größe prüfen
     Doc = ThisComponent
     mysheet = Doc.Sheets(0)
     Page = mysheet.drawPage
     Dim Point As New com.sun.star.awt.Point
     Dim Size As New com.sun.star.awt.Size

for i = 1 to Page.Count
	Grafik = doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
	Grafik = Page.getByIndex(i-1)
	if left(Grafik.Name,3) <> "qq_" then
		if Grafik.Size.Width>5000 or Grafik.Size.Height>5000 then
			msgbox ("Die ausgewählte Grafik ist zu groß.",16,"FEHLER")
			Page.remove(Grafik)
		end if
	end if
next i

'zu einem späteren Zeitpunkt Grafik suchen, benennen und positionieren
for i = 1 to Page.Count
	Grafik = doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
	Grafik = Page.getByIndex(i-1)
	if left(Grafik.Name,3) <> "qq_" then
		Grafik.Name="qq_BILD_A"
		Point.x = 6000
		Point.y = 0
		Grafik.Position = Point
		Grafik.MoveProtect = true
		Grafik.SizeProtect = true
	end if
next i

End Sub

Was übersehe ich oder wo liegt mein Fehler ?
Kann da jemand helfen ?

Danke !
Newbiebuh2010
*
Beiträge: 17
Registriert: Mo, 10.05.2010 19:26

Re: CALC: Grafik löschen lässt OO abstürzen

Beitrag von Newbiebuh2010 »

Noch ein Nachtrag:

Es scheint der remove-Befehl zu sein.
Wenn ich
> Page.remove(Grafik)
deaktiviere (als Kommentar stehen lasse), wird die Grafik natürlich nicht entfernt. Aber alles läuft ansonsten gut.

Bin ich mit diesem Befehl auf dem falschen Dampfer ? Habe ihn aber vorher in anderen Makros problemlos verwenden können.

Viele Grüße
Rene
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: CALC: Grafik löschen lässt OO abstürzen

Beitrag von lorbass »

Der Fehler ist bekannt: Issue 96245.

Gruß
lorbass
Newbiebuh2010
*
Beiträge: 17
Registriert: Mo, 10.05.2010 19:26

Re: CALC: Grafik löschen lässt OO abstürzen

Beitrag von Newbiebuh2010 »

Hi, lorbass,

und vielen Dank für die Antwort.
Na, dann werde ich mal versuchen, eine Umleitung zu konstruieren.

Allen noch einen schönen Sonntag !
Antworten