Hintergrundgrafik

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Hintergrundgrafik

Re: Hintergrundgrafik

von gigabert » Do, 14.01.2010 20:15

Hallo,

das klappt ja prima. Ein ThisComponent.Refresh an der richtigen Stelle, und es gibt keine Probleme bei der Anzeige der Hintergrundgrafik. Was mir heute noch nach langem Herumprobieren (vor diesem tollen Tipp) aufgefallen war: Nach dem Klick auf den Option Button wurde ja die Hintergrundgrafik eingeblendet und ein paar Elemente des Formulars verschwanden. Wenn ich nun die Fenstergrösse des angezeigten Formulars veränderte, dann erschienen diese Elemente wieder und alles sah so aus, wie gewünscht. Ausserdem klappte es auch, wenn ich bei einem Beschriftungsfeld (Label) die Hintergrundfarbe von "Standard" auf z.B. weiss setzte, dann blieb das Beschriftungsfeld auch bei einem Einblenden der Hintergrundgrafik.

Vielen Dank...

Gruss
Bert

Re: Hintergrundgrafik

von DPunch » Do, 14.01.2010 16:39

Ohne Dir das Verhalten erklären zu können, sollte ein

Code: Alles auswählen

oFrame.Refresh
bzw.

Code: Alles auswählen

thisComponent.Refresh
nach Einfügen der Grafik das Problem beheben.

Re: Hintergrundgrafik

von gigabert » Do, 14.01.2010 15:45

Hab gerade ein neues Problem damit entdeckt: und zwar habe ich nun ein Formular mit mehreren Kontrollelementen. Oben hab ich zwei Option Buttons (eine Gruppe). Wenn der zweite Button ausgewählt wurde, soll die Hintergrundgrafik gesetzt werden. Deshalb hab ich folgendes Makro an die Option Buttons gehangen (Ereignis "Status geändert"):

Code: Alles auswählen

Sub optAuswahl

	oForm = ThisComponent.drawpage.forms.getByName("MainForm")
	
	if oForm.getByName("opt1").state = 1 then
		MsgBox "1 ausgewählt"
	end if
	
	if oForm.getByName("opt2").state = 1 then
		SetBackgroundGraphic(ThisComponent)
	end if

End Sub
Die Hintergrundgrafik wird auch bei der Auswahl des zweiten Option Buttons eingeblendet. Nur verschwinden dann einige Kontrollelemente (Labels, Option Buttons, Checkboxen), das heisst sie werden unsichtbar. Die Option Buttons erscheinen wieder, wenn ich wieder mit der Maus auf deren Stelle klicke. Die Label bleiben weg. Woran kann das denn liegen? Daran, dass ich dem Sub SetBackgroundGraphic ThisComponent übergebe? Ich hatte es auch schon mit oForm versucht, aber da wurde die Methode getStyleFamilies() nicht erkannt.

Gruss
Bert

Re: Hintergrundgrafik

von gigabert » Do, 14.01.2010 13:42

OK, hab es jetzt noch in eine Sammlung von Makros gelegt, damit ich von anderen Formularen auch darauf zugreifen kann, falls ich es benötige. Ich übergebe dem Makro als Parameter einfach das Formularobjekt, welches die Hintergrundgrafik benötigt:

Code: Alles auswählen

Sub SetBackgroundGraphic(oFrame as Object)

	sGrafikLink = ConvertToURL( <kompletter Pfad zum Bild> )

	' First get the Style Families
	oStyleFamilies= oFrame.getStyleFamilies()
	' then get the PageStyles
	oPageStyles= oStyleFamilies.getByName("PageStyles")
	' then get YOUR page's style
	oMyPageStyle= oPageStyles.getByName("Standard")
	' then set your background
	with oMyPageStyle
		.BackGraphicUrl= _
		convertToUrl( sGrafikLink )
		.BackGraphicLocation= _
		com.sun.star.style.GraphicLocation.AREA
	end with
  
End Sub
Gruss
Bert

Re: Hintergrundgrafik

von gigabert » Do, 14.01.2010 13:33

Hallo,

danke für den Tipp. Ich hatte natürlich nur das Verzeichnis und den Dateinamen angegeben. Ich dachte halt, dass es ausreicht, weil alles im gleichen Verzeichnis liegt, wie die odb-Datei. Mit dem kompletten URL-Pfad klappt es nun aber. Man muss aber auch noch die BackGraphicLocation angeben, damit die Grafik über die komplette Fensterfläche gestreckt wird. Folgenden Code hab ich bei pitonyak (AndrewMacro.pdf) gefunden:

Code: Alles auswählen

Sub Main
  ' First get the Style Families
  oStyleFamilies= ThisComponent.getStyleFamilies()
  ' then get the PageStyles
  oPageStyles= oStyleFamilies.getByName("PageStyles")
  ' then get YOUR page's style
  oMyPageStyle= oPageStyles.getByName("Standard")
  ' then set your background
  with oMyPageStyle
    .BackGraphicUrl= _
      convertToUrl( <pathToYourGraphic> )
    .BackGraphicLocation= _
      com.sun.star.style.GraphicLocation.AREA
  end with
End Sub

Gruss
Bert

Re: Hintergrundgrafik

von Karolus » Do, 14.01.2010 13:23

Hallo
Hast du den vollständigen Pfad nebst:
.... = converttourl( "/home/gigabert/images/hintergrund1.jpg" )
genommen?

Gruß Karo

Hintergrundgrafik

von gigabert » Do, 14.01.2010 13:04

Hallo,

ich möchte in einem Formular (innerhalb odb-Datei) eine Hintergrundgrafik setzen. Die Hintergrundfarbe kann ich ja so ändern:

Code: Alles auswählen

oFormular.StyleFamilies.getByName("PageStyles").getByName("Standard").BackColor = RGB(200,0,0)
Jetzt hab ich mit xray den Wert BackGraphicURL gefunden, von dem ich vermute, dass es die Hintergrundrafik für das jeweilige Formular setzt:

Code: Alles auswählen

oFormular.StyleFamilies.getByName("PageStyles").getByName("Standard").BackGraphicURL = "images/hintergrund1.jpg"
So klappt es jedenfalls nicht. Was mache ich falsch?

Gruss
Bert

Nach oben