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:
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
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
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:
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
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
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"):
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
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
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
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3