[gelöst] Grafiken in original Größe mit Makro

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

Moderator: Moderatoren

Benutzeravatar
Krangel
**
Beiträge: 35
Registriert: Di, 22.04.2014 12:23
Wohnort: 3. Planet

[gelöst] Grafiken in original Größe mit Makro

Beitrag von Krangel »

Hallo,
ich möchte mit einem Makro Grafiken in original Größe mit einem Tabellen Dokument verknüpfen.
Ich finde keine Möglichkeit, die originale Größe einzustellen.
Das ist der Code, den ich mir zusammen gebastelt habe.

Code: Alles auswählen

DIM sFolderUrl as string ' Pfad
Dim Page As Object
Dim GraphicObjectShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size

Sub Grafik_einfuegen
	i = 1
	Aktueller_pfad		' holt den aktuellen Pfad

   Doc = ThisComponent
   Page =thisComponent.sheets(0).DrawPage
   GraphicObjectShape = Doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
   
   Size.Width = 5290 'Grösse
   Size.Height = 12170 'Grösse
   GraphicObjectShape.Size = Size
   
   Point.x = 12000 'Position   
   Point.y = 200 'Position
   GraphicObjectShape.Position = Point
   
   GraphicObjectShape.GraphicURL = sFolderUrl & "Berg Inverntar.png"

   GraphicObjectShape.Name = "Grafik" & i
   Page.add(GraphicObjectShape)
End Sub
Grüße
Zuletzt geändert von Krangel am Di, 16.06.2015 16:54, insgesamt 1-mal geändert.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Grafiken in original Größe mit Makro

Beitrag von komma4 »

Eine Verlinkung zu einem PNG hält leider die Original-Grösse im Objekt nicht vorrätig (andere Formate tun das).

Was Du machen kannst:

a) nach dem Einfügen das Objekt selektieren
b) mit einem dispatcher Kommando die Aktion Rechtsklick>Originalgrösse nachempfinden, also:

Code: Alles auswählen

   
   ' Selektion des gerade eingefügten Objekts
   ThisComponent.CurrentController.select(GraphicObjectShape)

   ' Idee: DannyB, 2004-11-04 oooforum.org
   ' Objekte für Dispatcher
   oDoc = ThisComponent
   oDocCtrl = oDoc.getCurrentController() 
   oDocFrame = oDocCtrl.getFrame() 
   '
   oDispatchHelper = createUnoService( "com.sun.star.frame.DispatchHelper" ) 
   oDispatchHelper.executeDispatch( oDocFrame, ".uno:OriginalSize", "", 0, Array() ) 

Das hilft?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
Krangel
**
Beiträge: 35
Registriert: Di, 22.04.2014 12:23
Wohnort: 3. Planet

Re: Grafiken in original Größe mit Makro

Beitrag von Krangel »

Hi,
also verstehen tue ich das nicht, woher weiß denn --> Rechtsklick>Originalgröße die Originalgröße?
Helfen würde es, wenn man per Makro die Grafik markieren könnte.

ความนับถือ
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Grafiken in original Größe mit Makro

Beitrag von komma4 »

Krangel hat geschrieben:woher weiß denn --> Rechtsklick>Originalgröße die Originalgröße?
Das liegt in den Geheimnissen des Quellcodes 8)
Dass es bei PNG nicht anders geht (weil die Grösse nicht in dem BASIC-Objekt hinterlegt ist) - mag ein Bug sein...


Die Zeile ThisComponent.CurrentController.select(GraphicObjectShape), am Ende Deines Makros zugefügt, selektiert das gerade eingefügte Objekt, die restlichen Zeilen rufen die Originalgrösse ab.

ขอบคุณ
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
Krangel
**
Beiträge: 35
Registriert: Di, 22.04.2014 12:23
Wohnort: 3. Planet

Re: Grafiken in original Größe mit Makro

Beitrag von Krangel »

Hi,
jop, funktinoniert gut.

:D :D Vielen Dank :D :D
Antworten