Seite 1 von 1

Rechteck per Makro erzeugen [gelöst]

Verfasst: Mo 28. Okt 2013, 12:16
von step
hallo zusammen,

ich stehe derzeit vor dem einfachen Problem, per Makro ein Rechteck mit Text in einem Draw-Dokument erzeugen zu wollen.
Das Rechteck bekomme ich hin, aber leider immer ohne den Text.

Vielleicht kann ich ja hier einen oder zwei Hinweise gekommen,

Gruß Step

LibreOffice 3.6.2.2 unter Linux Suse 11.3
Schwerpunkt: Makroprogrammierung von Draw

Re: Rechteck per Makro erzeugen

Verfasst: Di 29. Okt 2013, 17:51
von step
Nun, wem nicht geholfen wird, der mus das selbst machen ...

Ich habe es mit rumprobieren und viel Zeitaufwand nun geschafft, ein Rechteck mit Text darzustellen. Aber
leider habe ich noch nicht herausgefunden, wie man die Schriftgröße verstellt.

Ich habe vor, diesen Text durch das Rechteck, welches nicht sichtbar sein wird, in der Größe per Makro zu ändern.
Beim Durchlesen der Programierhandbücher, die mir offline zur Verfügung stehen, habe ich an der einer oder
anderen Stelle Hinweise gefunden, die eine solche Möglichkeit erahnen lassen. Aber wie das im Einzelnen dann vor
sich geht, das steht leider nicht dabei.

z.B. das Ding 'TextFitToSize'. Irgendwo wird auch angesprochen, das dieses Ding die Größenangabe per Eigenschaft
für die Schriftgröße ausser Betrieb setzt. Das alles ist aber noch recht schwamming und wage.

Ich komme mit den Handbüchern und Beispielen (für Draw habe ich noch nichts Passendes gefunden) noch nicht so
richtig klar.

Wie z.B. kann man Informationen aus einer API-Referenz ziehen? Gibt es da eine Anleitung oder besser Erklärung.

Ich bin für jeden Tip oder jedes Beispiel dankbar,

Gruß Step

PS: ich habe gerade noch mal hier im Forum nach API gesucht. Die Beiträge sind recht interessant, leider verstehe ich
bisher nur 'Bahnhof'. Auch ein Blick in die Api von Apache office hilft (noch) nicht. Was ich zunächst brauche ist eine
Step-by-Step Anleitung an einem Beispiel. Meistens bin ich nach so einer Lektüre dann in der Lage, mich selbst besser
weiterzubilden.

Re: Rechteck per Makro erzeugen

Verfasst: Mi 30. Okt 2013, 21:27
von F3K Total
Hi,
hier mal ein kleines Beispiel mit Erläuterungen:

Code: Alles auswählen

Sub S_insert_rectangle
    dim aPosition as new com.sun.star.awt.Point
    dim aSize as new com.sun.star.awt.Size
    aPosition.X = 6000  'obere linke Ecke 6cm von links
    aPosition.Y = 5000 +(nNumber-1)*4000  'obere linke Ecke 5cm von oben
    asize.Height = 3000 '3cm hoch
    asize.Width = 9000 '9cm breit
    oshape = Thiscomponent.createinstance("com.sun.star.drawing.RectangleShape") 'Erzeugen eines Rechteckes
    with oshape
        .Position = aPosition 'Zuweisen von Position
        .Size = aSize         ' und Größe
    end with
    odrawpage = thiscomponent.drawpages.getbyindex(0)
    odrawpage.add(oshape)  'in die Zeichenfläche einfügen
    with oshape
        .Name = "Mein Rechteck"  'Namen vergeben
        .String = "Da bin ich"'Text eintragen
        .CharHeight = 32 'Schriftgröße
        .CharFontName = "Segoe Script" 'Schriftart
        .CharColor = RGB(0,107,107)'Schriftfarbe
        .CharWeight = 100 'Schriftstärke 100 = normal, 150 = Fett
        .CharShadowed = True 'Schriftschatten an
        .FillColor = RGB(255,211,32) 'Füllfarbe
        .LineWidth = 18 'Randdicke (0,018 cm)
        .LineColor =  RGB(0,107,107) 'Randfarbe = Schriftfarbe
        .Shadow = true 'Schatten an
        .ShadowColor = RGB(128,128,128) 'Schattenfarbe
        .ShadowTransparence = 50  'Schattentransparenz 50% 
        .ShadowXDistance = 500 'Schattenbreite X-Richtung
        .ShadowYDistance = 100 'Schattenbreite Y-Richtung
        .CornerRadius = 500 'Eckenradius 0,5cm
    end with
End Sub
Ich empfehle Dir die Verwendung eines Inspection-Tools wie MRI oder Xray
Damit kannst Du alle OOo-Dokumente hinsichtlich ihres Aufbaues durchleuchten.
Wenn Du Xray installiert hast, kannst du mit dieser zusätzlichen Zeile am Ende noch viel über das Rechteck herausbekommen:

Code: Alles auswählen

.
.
.
        .CornerRadius = 500 'Eckenradius 0,5cm
    xray oshape
    end with
End Sub
Viel Erfolg
Gruß R

Re: Rechteck per Makro erzeugen

Verfasst: Do 31. Okt 2013, 13:24
von step
Hallo R.,

erst mal vielen Dank für das ausführliche Listing. Ich kann jetzt schon beim Durchlesen sagen, dass
das funktioniert;-).

Ich habe inzwischen Xray intalliert, das SDK ebenfalls (Das ist ja hauptsächlich eine html-Seiten(-suite)). Die kann man
auch manuell durchstöbern.

"Warum fehlt 'beans' unter dem Model com.sun.star."? könnte ich jetzt fragen, ist aber nicht so wichtig.

Interessanter ist vielleicht, das ich herausgefunden habe (gestern abend gegend 0:15 Uhr), wie das mit dem
TextFitToSize geht. Das Ergebnis ist auf jeden Fall das, was mir zur Lösung des Problems dienen kann. Das
Ganze läuft unter der Bezeichnung 'Enum' (= Aufzählung) im Modul com.sun.star.drawing:

oShape.TextFitToSize = com.sun.star.drawing.TextFitToSizeType.ALLLINES REM skaliert den Text in alle Richtungen


Gruß Step