CALC: Grafik löschen lässt OO abstürzen
Verfasst: 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:
Was übersehe ich oder wo liegt mein Fehler ?
Kann da jemand helfen ?
Danke !
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
Kann da jemand helfen ?
Danke !