Schältflächen aus Dokument entfernen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Schältflächen aus Dokument entfernen

Beitrag 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 :)
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7533
Registriert: Mo, 02.01.2006 19:48

Re: Schältflächen aus Dokument entfernen

Beitrag 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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Schältflächen aus Dokument entfernen

Beitrag von clag »

Hi Karo

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

Danke
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Schältflächen aus Dokument entfernen

Beitrag 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
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Schältflächen aus Dokument entfernen

Beitrag von clag »

Hallo DPunch,

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

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Schältflächen aus Dokument entfernen

Beitrag 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
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Antworten