Grafik aus- einblenden

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

Moderator: Moderatoren

white_chicken
Beiträge: 9
Registriert: Mi, 22.03.2006 14:09
Wohnort: Saarland

Grafik aus- einblenden

Beitrag von white_chicken »

Ich möchte in einem CALC-Dokument eine Grafik per Makro ein- bzw. aublenden. Die Methode .getGraphicObjects scheint bei der OO Version 1.1.5 die ich benutze nicht zu funktionieren. Ich bekomme immer die Fehlermeldung: Eigenschaft oder Methode nich gefunden.

???
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey white_chicken,
Die Methode .getGraphicObjects scheint bei der OO Version 1.1.5 die ich benutze nicht zu funktionieren.
Sicher? worauf wendest du sie denn an?
Also, die Methode funktioniert natürlich - nur brauchst du dei Drawpage des jeweiligen Tabellenblattes -> oDrawpage = thisComponent.sheets(0) .drawpage

Und darauf sollte es auch funktionieren:-)

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
white_chicken
Beiträge: 9
Registriert: Mi, 22.03.2006 14:09
Wohnort: Saarland

Beitrag von white_chicken »

es klappt einfach nicht :(

Ich habe eine Tabelle mit Namen "Kapital und Steuern" und dort ein Grafikobjekt mit Namen "warnschild" eingefügt. Diese Grafik möchte ich per Makro ausblenden.

So sieht mein Makroentwurf aus:

Code: Alles auswählen

Sub Grafik_ausblenden
	myDoc = ThisComponent 
	mySheet = myDoc.Sheets().getByName("Kapital und Steuern")
	Page = mySheet.drawPage
   Grafik = Page.getGraphicObjects().GetbyName("warnschild")
   Grafik.Visible = false	
End Sub


Hab jetzt schon einiges ausprobiert aber wie ich es drehe und wende, ich bekomme in der vorletzten Zeile immer wieder die Fehlermeldung: Eigenschaft oder Methode nich gefunden.

:?: :?: :?:
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey white_chicken,
ich bekomme in der vorletzten Zeile immer wieder die Fehlermeldung: Eigenschaft oder Methode nich gefunden.
Das wundert mich gar nicht. Die Methode getGraphicObjects() gibt es nur bei Writer-Dokumenten für direkt eingebette Objekte.

Calc nutzt das System der Drawpage - und da gibt es nur indexbasierten Zugang.
Im Übrigen gibt es auch keine "Visible" Eigenschaft für Obejte der Drawpage. Das geht eigentlich nur über die Ebeneneigenschaft - nur die sit eben bei Calc auch nicht voll vorhanden.
Abhilfe: Die Transparenz des Grafikobjektes auf 100 setzen - dann ist es vollständig durchsichtig und du hast den gleichen effekt.
Unter der Annahme, dass du nur 1 Grafikobjekt da drin hast:

Code: Alles auswählen

Sub Grafik_ausblenden
   myDoc = ThisComponent
   mySheet = myDoc.Sheets().getByName("Kapital und Steuern")
   Page = mySheet.drawPage
   Grafik = Page.getByIndex(0)   'das erste Grafikobjekt
   Grafik.transparency = 100      ' ist jetzt durchsichtig
end sub
Hast du mehrere Grafikobjekte, dann musst du eben eine Schleife programmieren und jedes einzelne Element ansprechen, dann mit der Namenseigenschaft vergleichen und so dein gewünschtes Objekt extrahieren.

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
white_chicken
Beiträge: 9
Registriert: Mi, 22.03.2006 14:09
Wohnort: Saarland

Beitrag von white_chicken »

@Toxitom: Danke für deine Hilfe!!!

Leider bekomme ich bei der Zeile...

Code: Alles auswählen

 Grafik.transparency = 100      ' ist jetzt durchsichtig 
...auch die Fehlermeldung: Eigenschaft oder Methode nich gefunden.

:idea: Ich hab es aber jetzt anders gelöst. Nicht über die Transparenz des Grafikobjektes sondern die Größe. Ich setze SIZE einfach auf 0 und schon ist die Grafik auch verschwunden.

Hier der Code dazu:

Code: Alles auswählen

Sub Grafik_ausblenden
    dim Grafik as Object
	 myDoc = ThisComponent
    mySheet = myDoc.Sheets().getByName("Kapital und Steuern")
    Page = mySheet.drawPage
    Grafik = Page.getByIndex(0)   
    Dim Size As New com.sun.star.awt.Size
    Size.Width = 100
	 Size.Height = 100
	 Grafik.Size=Size
End Sub
Antworten