Seite 1 von 1

Wie ...drawing.FillProperties für Diagrammwand anwenden?

Verfasst: So, 17.08.2014 22:36
von balu
Hallo liebe Gemeinde!

Ich erstelle zu diesem Thread: Per Makro Bitmap importieren jetzt mal ein neues Thema. Dort ist auch eine Beispieldatei vorhanden.

Warum einen neuen Thread?
Einerseits damit ich persönlich etwas dazu lerne, und anderseits damit man sich in Ruhe auf das Thema "...drawing.FillProperties" konzentrieren kann.

Die "OpenOffice" (OOo/AOO/LO) bringen ja von Haus aus ein paar Bitmaps mit, die man ganz einfach in einem StarBasic-Code z.B. als Hintergrundbild aktivieren kann. Das würde beispielsweise wie folgt aussehen.

Code: Alles auswählen

chart.Diagram.Wall.FillBitmapName = "Weltraum"
In Draw kann man von Hand weitere Bitmaps hinzufügen, die nach einem Programmneustart global in allen anderen Modulen dann zur Verfügung stehen. Und genau dieses Verfahren soll jetzt umgangen werden, damit man ganz individuell andere Bitmaps für die Diagrammwand verwenden kann, und das ohne Programmneustart.

Nun habe ich mittlerweile herausgefunden, dass die Diagrammwand chart.Diagram.Wall den Service com.sun.star.drawing.FillProperties unterstüzt. Und bei diesem Service soll man dann die Möglichkeit haben die URL für die Bitmap anzugeben.
"com::sun::star::drawing::FillProperties";"FillBitmapURL#optional" <- ausm I-Net kopiert.

Ich weiß mittlerweile das man einige Service z.B. über createInstance("...") aktivieren kann. Aber auch nur dann, wenn bei Methods createInstance zur Verfügung steht. Und das ist bei chart.Diagram.Wall eben nicht der Fall, dort gibt es keine createInstance. Dann hatte ich auch versucht Infos darüber zu finden wie ich die "...drawing.FillProperties" in die setPropertyValues unterbringen kann. Aber meine tage lange Sucherei brachte mir nix, da ich nichts passendes gefunden habe. Zu meiner Such-Odyssee sag ich jetzt nichts mehr, da dies ein eigenständiger Roman wäre. Kurz und schmerzlos; ich weiß nicht mehr weiter. :(


Könnt ihr mir Tipps geben wie ich auf Grund der zusammengetragenen Infos weiter zum Ziel komme?

Könnt ihr mir irgendwie behilflich sein, damit ich ein individuelles Bitmap als Hintergrund für die Diagrammwand setzen kann?

Freue mich schon auf eure Antworten, und bedanke mich schon mal für eure Bemühungen. :)



Gruß
balu

Re: Wie ...drawing.FillProperties für Diagrammwand anwenden?

Verfasst: Mo, 18.08.2014 08:13
von F3K Total
Hallo Balu,
det jeeeht:

Code: Alles auswählen

Sub modify_Diagram_Fill_Bitmap
    charts = thisComponent.sheets.getByName("Tabelle1").Charts
    'Diagrameigenschaften anpassen
    chart = charts(0).EmbeddedObject

    'Bild einlesen
    sImgPath = "C:\Users\<USER>\Desktop\MeinBild.png" 'Pfad zum Bild
    nWidth = 2540 'Breite
    nHeight = 2540 'Höhe
    sImgPath = ConvertToUrl(sImgPath)
    oBitmaps = chart.createInstance( "com.sun.star.drawing.BitmapTable")
    if oBitmaps.hasByName("myBitmap1") Then
        oBitmaps.replacebyname("myBitmap1",sImgPath)
    else
        oBitmaps.insertByName( "myBitmap1", sImgPath )
    endif
    oPic = oBitmaps.getByName( "myBitmap1" )
    oGraph = chart.createInstance("com.sun.star.drawing.GraphicObjectShape")
    With oGraph
       .GraphicURL = oPic
    End With	    
    oDiagram = chart.Diagram
    With oDiagram
    'Diagrammhintergrund
        .wall.FillStyle = 4
        .wall.FillBitmapName = "myBitmap1"
        .wall.FillBitmapSizeX = 1250
        .wall.FillBitmapSizeY = 1250
    End With
    chart.Diagram = oDiagram
End Sub
Gruß R

Re: Wie ...drawing.FillProperties für Diagrammwand anwenden?

Verfasst: Mi, 20.08.2014 13:01
von balu
Hallo R,

Danke für deine funktionierende Lösung. :)

Aber!
Einerseits ist es nicht das was ich wollte, denn es geht mir schon um die "...drawing.FillProperties" und von daher würde ich mich noch immer über Antworten und Tipps dazu freuen. Und anderseits wirft deine Lösung eine Frage auf die vielleicht auch bei meinem Wunsch zutreffen könnte.

Durch deinen Code wird Programmweit namentlich eine zusätzliche Bitmap eingefügt, die dann bei den Bitmaps aufgelistet ist. Jedoch steht diese nicht wirklich zur Verfügung, da ja nur der Name aufgelistet wird und für die Bitmap selber wird so was ähnliches wie ein Pseudobild aktiviert was nicht dem echten Bitmap entspricht. Dies ist auch nach einem Programmneustart der Fall.
Nun die Frage: Geschieht dies auch wenn man die "...drawing.FillProperties" ans laufen kriegt, oder ist das nur bei deiner Lösung so?



Gruß
balu

Re: Wie ...drawing.FillProperties für Diagrammwand anwenden?

Verfasst: Mi, 20.08.2014 13:45
von F3K Total
Hallo Balu,
Das Makro tut das gleiche, was passiert wenn man eine Bitmap manuell auswaehlt. Es uebernimmt die Datei in das aktuelle Dokument und ordnet sie der Diagrammwand als Hintergrundbild zu. Nur, das man eben eine Bitmap frei waehlen kann. Das Erscheinungsbild, ob gezoomt, gekachelt usw. kann man einstellen (findest Du mit Xray heraus) Wie man eine Bitmap der gerade aktiven Office Installation zuordnet, weiss ich momentan nicht, und kann es mangels Rechner gerade nicht herausfinden.
Gruss R