Seite 1 von 1

Zeichenobjekt löschen

Verfasst: Di, 17.03.2009 22:22
von erikafuchs
Hallo Leute,
kann mir jemand sagen, wie ich den Befehl formulieren muss um ein Zeichenobjekt zu entfernen. Wenn ich zB. ein Rechteck zeichne mit:

Code: Alles auswählen

Sub RechteckErstellen
   dim oDoc as Object, oPage as Object, oRechteck as object
   oDoc=ThisComponent
   oPage=oDoc.drawPages(0) 
   dim oPos as new com.sun.star.awt.Point
   oPos.X=12000
   oPos.Y=7000
   dim oSize as New com.sun.star.awt.Size
   oSize.width=4000
   osize.height=2000
   oRechteck=oDoc.createInstance("com.sun.star.drawing.RectangleShape")
   with oRechteck
     .Position=oPos
     .Size=oSize
     .Name="Rechteck"
   end with
   oPage.add(oRechteck)
end sub   
Kann ich dann das Rechteck irgenwie mit "oPage.removeByName("Rechteck") oder so entfernen?

Ebenso müsste ich auch die Maßlinie "Masslinie1" entfernen.

Grüße
Pit

... da fällt mir ein: Einfacher wäre es, wenn ich einfach alle Objekte auf der drawpage löschen könnte.

Re: Zeichenobjekt löschen

Verfasst: Mi, 18.03.2009 12:24
von ykcim
Eine RemoveByName oder auch ein getbyname geht nicht.
Man muß eine Schleife über die Grafikobjekte machen und den Namen prüfen oder alle in der Schleife löschen.

Code: Alles auswählen

 oPage=odoc.drawpages(0)
 for i=opage.count-1 to 0 Step -1
    oGrafik=opage.getbyindex(i)
' Entweder prüfen
    if oGrafik.name="XXXX" then
      opage.remove(oGrafik)
    end if
 'oder immer löschen
'   opage.remove(oGrafik)
next
Blöderweise schmiert die Funktion bei mir unter 3.0.1 Windows ab. Mit 2.4 geht es.

mfg
Michael

Re: Zeichenobjekt löschen

Verfasst: Mi, 18.03.2009 22:23
von erikafuchs
Lieber Michael,
vielen Dank erstmal für deine Hilfe. Da ich diese Routine in ein Programm einbauen möchte, dass hunderte von Schülern mit verschiedenen oO Versionen nutzen, wäre das jetzt allerdings schlecht wenn nur die geringste Gefahr von Programmabstürzen besteht. Wir schreiben sogar Mathetests mit dem Programm. Dann suche ich vielleicht doch nach einer Möglichkeit die gesamte Drawpage oder alle Elemente auf einmal zu entfernen. Hat dazu jemand eine Idee? Vielleicht ist ja die Information hilfreich, dass ich die Routine innerhalb eines CalcTabellenblattes nutzen will.
Grüße
Pit