Seite 1 von 1

Schältflächen aus Dokument entfernen

Verfasst: So, 03.10.2010 09:48
von clag
Hallo Kenner und Könner,

aus einem Dokument sollen Buttons/Schaltflächen entfernt werden, ich versuche es mit Code von DPunch den er hier einmal gezeigt hatte,
der funktioniert auch soweit, aber leider nur solange wie keine Bilder in dem Dokument vorhanden sind !

Ist ein Bild im Dokument eingefügt gibt es die Fehlermeldung " Eigenschaft oder Methode nicht gefunden "

Code: Alles auswählen

Globalscope.BasicLibraries.loadLibrary("Tools")
'oDoc = StarDesktop.loadComponentFromURL(dateiurl, , 0, Array() )
'oDoc.lockcontrollers
	oDrawPage = oDoc.DrawPage
	oForm = oDrawPage.Forms.getByIndex(0)

	aControlElementsToRemove = Array("Schaltfläche 1","Schaltfläche 2","Schaltfläche 3",_
	"Schaltfläche 4","Schaltfläche 5","Schaltfläche 6","Schaltfläche 7",_
	"Schaltfläche 8","Schaltfläche 9")

	For i = 0 To UBound(aControlElementsToRemove)
	sControlName = aControlElementsToRemove(i)
		If oForm.hasByName(sControlName) then
		oForm.removeByName(sControlName)
		End If
	Next i

	For n = oDrawpage.Count-1 To 0 Step -1
		oThisShape = oDrawpage.getByIndex(n)

		If NOT isNull(oThisShape.Control) Then ' < Fehlermeldung Eigenschaft oder Methode nicht gefunden

		sControlName = oThisShape.Control.Name
			If IndexInArray(sControlName,aControlElementsToRemove) > -1 Then
			oDrawpage.remove(oThisShape)
			End If
		End If
	Next n
kann mir bitte jemand sagen was da schiefläuft und vor allem wie man den Fehler vermeidet

Danke für's lesen und ggf auch für's drüber nachdenken :)

Re: Schältflächen aus Dokument entfernen

Verfasst: So, 03.10.2010 13:42
von Karolus
Hallo
Für die Drawpage(s) gibts .dispose() probiers mal damit.

Code: Alles auswählen

...
while thiscomponent.drawpage.hasElements
thiscomponent.drawpage.getbyindex(0).dispose
wend
...
oder so ähnlich (ungetestet)
Gruß Karo

Re: Schältflächen aus Dokument entfernen

Verfasst: So, 03.10.2010 14:37
von clag
Hi Karo

das "dispose" scheint etwas forscher vorzugehen oder ?
mal sehen ob ich damit weiter komme

Danke

Re: Schältflächen aus Dokument entfernen

Verfasst: So, 03.10.2010 15:10
von DPunch
Aloha
clag hat geschrieben:Ist ein Bild im Dokument eingefügt gibt es die Fehlermeldung " Eigenschaft oder Methode nicht gefunden "
(...)kann mir bitte jemand sagen was da schiefläuft und vor allem wie man den Fehler vermeidet
Ein Bild (genauer gesagt ein TextGraphicObject) hat die Methode .getControl mangels des Interfaces XControlShape nicht, daher die Fehlermeldung.
Du brauchst aber lediglich eine Abfrage, ob das Element den Service ControlShape unterstützt oder nicht. Tut es dies, steht die Methode .getControl auf jeden Fall zur Verfügung.

Code: Alles auswählen

	For n = oDrawpage.Count-1 To 0 Step -1
		oThisShape = oDrawpage.getByIndex(n)
		If oThisShape.supportsService("com.sun.star.drawing.ControlShape") Then '<---------------
			If NOT isNull(oThisShape.Control) Then ' < Fehlermeldung Eigenschaft oder Methode nicht gefunden
				sControlName = oThisShape.Control.Name
				If IndexInArray(sControlName,aControlElementsToRemove) > -1 Then
					oDrawpage.remove(oThisShape)
				End If
			End If
		End If
	Next n

Re: Schältflächen aus Dokument entfernen

Verfasst: So, 03.10.2010 15:29
von clag
Hallo DPunch,

so erklärt, wird das Verhalten direkt vorhersehbar
und Danke für den Code der das gleich ausbügelt :)

Re: Schältflächen aus Dokument entfernen

Verfasst: So, 03.10.2010 15:36
von turtle47
Hallo,
DPunch hat geschrieben:Ein Bild (genauer gesagt ein TextGraphicObject) hat die Methode .getControl mangels des Interfaces XControlShape nicht
Das verrät einem xray ganz schnell wenn man solch eine Fehlermeldung bekommt:
clag hat geschrieben:"Eigenschaft oder Methode nicht gefunden "
und dann in der Schleife die Objekte mit xray untersucht. :wink:

Jürgen