Удаление добавленного изображения (картинки)

Автор progman2000, 7 апреля 2015, 15:23

0 Пользователи и 1 гость просматривают эту тему.

progman2000

Приветствую всех !

Ни как не могу разобраться, как удалить вставленное из макроса изображение (картинку). Код вставки:
sGraphicService = "com.sun.star.drawing.GraphicObjectShape"
oGraphic = ThisComponent.createInstance(sGraphicService)
vSheet.DrawPage.add(oGraphic)
oProvider = createUnoService("com.sun.star.graphic.GraphicProvider")
sGraphicURL(0).Name = picPath(0).Name
sGraphicURL(0).Value = picPath(0).Value
oGraphic.Graphic = oProvider.queryGraphic(sGraphicURL())

Заранее спасибо...

rami

Если вставить изображение:
vSheet.DrawPage.add(oGraphic)
то удалить:
vSheet.DrawPage.remove(oGraphic)

progman2000

Не выходит каменный цветок :(

Вот как пытаюсь удалить:
    sGraphicService = "com.sun.star.drawing.GraphicObjectShape"
    oGraphic = ThisComponent.createInstance(sGraphicService)
    oProvider = createUnoService("com.sun.star.graphic.GraphicProvider")
    sGraphicURL(0).Name = picPath(0).Name    ' URL
    sGraphicURL(0).Value = picPath(0).Value    ' путь к файлу, который добавлял
    oGraphic.Graphic = oProvider.queryGraphic(sGraphicURL())
    vSheet.DrawPage.remove(oGraphic)

sGraphicURL(0) заполняю параметрами, использовавшимися при добавлении...

rami

Цитата: progman2000 от  7 апреля 2015, 14:14Не выходит каменный цветок :(
Это работает в том макросе, где внедряется картинка.
Цитата: progman2000 от  7 апреля 2015, 14:14sGraphicURL(0) заполняю параметрами, использовавшимися при добавлении...
Дело в том, что при вставке объекта связь с оригиналом утрачивается. Картинка получает новый GraphicURL, который вам(в смысле человеку) не известен и не понятен. Вопрос: если у вас несколько картинок на листе как вы узнаете какую удалять?
Если картинка одна, то удалить её просто:
Sub Main   Dim oDrawPages
oDrawPages=ThisComponent.DrawPages(0)
oDrawPages.remove(oDrawPages(0))
End Sub

Если картинок несколько, то повторение макроса или цикла удаления, приведёт к удалению в порядке создания. Можно при создании картинки присвоить ей имя.

progman2000

Приветствую.

Спасибо за подсказку, все заработало. Вот вариант, может кому пригодится:

Rem Добавляем картинку и присваиваем ей имя
    sGraphicService = "com.sun.star.drawing.GraphicObjectShape"
    oGraphic = ThisComponent.createInstance(sGraphicService)
    vSheet.DrawPage.add(oGraphic)
    oProvider = createUnoService("com.sun.star.graphic.GraphicProvider")
    sGraphicURL(0).Name = "URL"
    sGraphicURL(0).Value = "Путь к файлу картинки"
    oGraphic.Graphic = oProvider.queryGraphic(sGraphicURL())
    oGraphic.Name = "Pic1"

Rem Удаляем добавленную картинку
vSheet = ThisComponent.Sheets(0)
oDP = vSheet.getDrawPage()
For i=0 To oDP.getCount()-1
  oGraph1 = oDP.getByIndex(i)
  If oGraph1.Name = "Pic1" Then
    oDrawPages1=ThisComponent.DrawPages(0)
    oDrawPages1.remove(oDrawPages1(i))
  End If
Next