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

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: CALC: Grafik löschen lässt OO abstürzen

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

von Newbiebuh2010 » So, 06.06.2010 18:43

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 !

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

von lorbass » So, 06.06.2010 18:08

Der Fehler ist bekannt: Issue 96245.

Gruß
lorbass

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

von Newbiebuh2010 » So, 06.06.2010 17:32

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

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

von Newbiebuh2010 » So, 06.06.2010 17:16

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 !

Nach oben