Re: [de-users] Per Makro in Textdokument zeichnen

2005-12-28 Thread Jochen Georges
Am Mittwoch 28 Dezember 2005 16:51 schrieb Thomas Krumbein:
> Hey Jochen,
>
> Jochen Georges schrieb:
> > Die Reihenfolge ist es nicht.
>
> Ja, da hast du recht.
>
> > Der Hase muss also woanders im Pfeffer liegen.
>
> Ja, auch das stimmt. An der Verankerung!
>
> Ich hab grad mal deinen Code ausprobiert - soweit die Fragmente es
> zulassen. (der komplette Code war leider nicht am anderen Post!)

?? 
Zitat aus meiner Mail von 12:58:20

"
Dazu habe ich noch nichts gefunden.
Lediglich im Index von deinem Buch ;-)

Vielen Dank für jeden Hinweis.

Beste Grüße
Jochen

Sub zeichneLinie
Dim Doc As Object
Dim Cursor As Object
...
"
> Danach wird das Shape "als Zeichen" eingefügt, da gibt es keinen
> "Durchlauf". Wenn du das änderst (z.B. am Absatz), dann funktioniert das
> einwandfrei.
>
> Also, folgende Zeile einfügen:
>
> RS.AnchorType = com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH
>
> Am besten nach der TextWar Zeile aber vor der Zuweisen Zeile.
>
> Dann sollte es funktionieren.

Juhuu, das klappt.
Vielen Dank.

Beste Grüße
Jochen





___
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [de-users] Per Makro in Textdokument zeichnen

2005-12-28 Thread Thomas Krumbein
Hey Jochen,

Jochen Georges schrieb:

> 
> Die Reihenfolge ist es nicht.

Ja, da hast du recht.

> Der Hase muss also woanders im Pfeffer liegen.

Ja, auch das stimmt. An der Verankerung!

Ich hab grad mal deinen Code ausprobiert - soweit die Fragmente es
zulassen. (der komplette Code war leider nicht am anderen Post!)

Danach wird das Shape "als Zeichen" eingefügt, da gibt es keinen
"Durchlauf". Wenn du das änderst (z.B. am Absatz), dann funktioniert das
einwandfrei.

Also, folgende Zeile einfügen:

RS.AnchorType = com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH

Am besten nach der TextWar Zeile aber vor der Zuweisen Zeile.

Dann sollte es funktionieren.

Viele Grüße
Thomas

-- 
## Marketing deutschsprachiges Projekt
## http://de.openoffice.org  - www.openoffice.org
## Vorstand OpenOffice.org Deutschland e.V.
## Mitglieder willkommen: www.OOoDeV.org

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [de-users] Per Makro in Textdokument zeichnen

2005-12-28 Thread Jochen Georges
Am Mittwoch 28 Dezember 2005 14:15 schrieb Michael Dannenhöfer:
> Hi,
>
> >Ich kann jetzt meine Linie mitten im Text zeichnen. Der Wert für Umlauf
> > soll Durchlauf sein.
> >Doch anscheinend wird mein Versuch diesen Wert zu setzen ignoriert.
> > Size.Width = 1500
> > Size.Height = 900
> > RS = Doc.createInstance("com.sun.star.drawing.LineShape")
> > RS.Size = Size
> > RS.TextWrap = com.sun.star.text.WrapTextMode.THROUGHT
> > Doc.Text.insertTextContent(Cursor, RS, False)
> >
> >Was mache ich falsch?
>
> Erzeugst Du auch das Objekt für Size?

Hallo Michael,
Am Ende der Mail ist der gesamte Quelltext.
Das Sizeobjekt wird in Zeile 5 erzeugt.

Beste Grüße
Jochen





___
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [de-users] Per Makro in Textdokument zeichnen

2005-12-28 Thread Jochen Georges
Am Mittwoch 28 Dezember 2005 13:34 schrieb Thomas Krumbein:
> Hey Jochen,
>
> Jochen Georges schrieb:
> >[..]
> > Ich kann jetzt meine Linie mitten im Text zeichnen. Der Wert für Umlauf
> > soll Durchlauf sein.
> > Doch anscheinend wird mein Versuch diesen Wert zu setzen ignoriert.
>
> Sicher?

> > Size.Width = 1500
> > Size.Height = 900
> > RS = Doc.createInstance("com.sun.star.drawing.LineShape")
> > RS.Size = Size
> > RS.TextWrap = com.sun.star.text.WrapTextMode.THROUGHT
> > Doc.Text.insertTextContent(Cursor, RS, False)
> >
> > Was mache ich falsch?
>
> Möglicherweise die Reihenfolge?
Die Reihenfolge ist es nicht.
Unter "Rechtsklick auf die entstandene Linie" - "Umlauf" - "Bearbeiten"
sehe ich den gesetzten Wert.
Er ist korrekt, ich habe die Werte geändert und der jeweils gesetzte, wird 
auch angezeigt.
Aber das Verhalten der Linie richtet sich nicht danach.

Der Hase muss also woanders im Pfeffer liegen.

>
> Die Eigenschaft "TextWrap" steht eigentlich erst zur Verfügung, wenn das
> Objekt ein "Text-Content Objekt" ist.
>
> Also: erst dem Text das Objekt zuweisen, dann die Eigenschaften des
> Objektes ändern. Versuch mal diese Reihenfolge.

Das Verhalten ist nicht verändert.


Vielen dank für alle Tipps.

Beste Grüße
Jochen





___
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [de-users] Per Makro in Textdokument zeichnen

2005-12-28 Thread Michael Dannenhöfer

Hi,


Ich kann jetzt meine Linie mitten im Text zeichnen. Der Wert für Umlauf soll 
Durchlauf sein.

Doch anscheinend wird mein Versuch diesen Wert zu setzen ignoriert.
Size.Width = 1500
Size.Height = 900
RS = Doc.createInstance("com.sun.star.drawing.LineShape")
RS.Size = Size
RS.TextWrap = com.sun.star.text.WrapTextMode.THROUGHT
Doc.Text.insertTextContent(Cursor, RS, False)

Was mache ich falsch?

 


Erzeugst Du auch das Objekt für Size?

Dim Size As New com.sun.star.awt.Size
Size.Width = 1500
Size.Height = 900
RS.Size=Size

mfg
Michael

--
FAQ zu Starbasic -> http://www.starbasicfaq.de
Volltextsuche in SO/OOo -> http://www.dannenhoefer.de/down


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [de-users] Per Makro in Textdokument zeichnen

2005-12-28 Thread Thomas Krumbein
Hey Jochen,

Jochen Georges schrieb:
>[..]
> Ich kann jetzt meine Linie mitten im Text zeichnen. Der Wert für Umlauf soll 
> Durchlauf sein.
> Doch anscheinend wird mein Versuch diesen Wert zu setzen ignoriert.

Sicher?

>   Size.Width = 1500
>   Size.Height = 900
>   RS = Doc.createInstance("com.sun.star.drawing.LineShape")
>   RS.Size = Size
>   RS.TextWrap = com.sun.star.text.WrapTextMode.THROUGHT
>   Doc.Text.insertTextContent(Cursor, RS, False)
> 
> Was mache ich falsch?

Möglicherweise die Reihenfolge?

Die Eigenschaft "TextWrap" steht eigentlich erst zur Verfügung, wenn das
Objekt ein "Text-Content Objekt" ist.

Also: erst dem Text das Objekt zuweisen, dann die Eigenschaften des
Objektes ändern. Versuch mal diese Reihenfolge.

Gruss
Thomas


-- 
## Marketing deutschsprachiges Projekt
## http://de.openoffice.org  - www.openoffice.org
## Vorstand OpenOffice.org Deutschland e.V.
## Mitglieder willkommen: www.OOoDeV.org

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [de-users] Per Makro in Textdokument zeichnen

2005-12-28 Thread Jochen Georges
Am Mittwoch 28 Dezember 2005 11:04 schrieb Thomas Krumbein:
> Hey Jochen,
...
> Das Grafikobjekt ist nun auf jeden Fall ein Text-Content-Objekt und
> besitzt diverse Eigenschaften - unter anderem einen Ankertyp (Seite,
> Zeichen, Absatz,...) und eine Textumlauf (TextWarp). Siehe hierzu
> com.sun.star.text.TextContent.

Ich kann jetzt meine Linie mitten im Text zeichnen. Der Wert für Umlauf soll 
Durchlauf sein.
Doch anscheinend wird mein Versuch diesen Wert zu setzen ignoriert.
Size.Width = 1500
Size.Height = 900
RS = Doc.createInstance("com.sun.star.drawing.LineShape")
RS.Size = Size
RS.TextWrap = com.sun.star.text.WrapTextMode.THROUGHT
Doc.Text.insertTextContent(Cursor, RS, False)

Was mache ich falsch?

> Interessant sind aauch die Methoden des Services
> com.sun.star.text.XTextContent, welche die Plazierung innerhalb des
> Textes ermöglichen.

Dazu habe ich noch nichts gefunden.
Lediglich im Index von deinem Buch ;-)

Vielen Dank für jeden Hinweis.

Beste Grüße
Jochen

Sub zeichneLinie
Dim Doc As Object
Dim Cursor As Object
Dim LineShape As Object
Dim Size As New com.sun.star.awt.Size

Doc = StarDesktop.CurrentComponent 
Cursor = Doc.Text.createTextCursor()
Cursor.gotoNextWord(false) 
'false damit der überwanderte Bereich nicht markiert wird
Size.Width = 1500
Size.Height = 900

RS = Doc.createInstance("com.sun.star.drawing.LineShape")
RS.Size = Size
RS.TextWrap = com.sun.star.text.WrapTextMode.THROUGHT

Doc.Text.insertTextContent(Cursor, RS, False)
End Sub





___
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [de-users] Per Makro in Textdokument zeichnen

2005-12-28 Thread Thomas Krumbein
Hey Jochen,

Jochen Georges schrieb:
[..]
>>Ich hätte ein 
>>Beispiel für das Einfügen einer Grafik (eines Bildes) - für die Linie
>>kann ich dir nichts bieten.
> 
> 
> Das würde mich natürlich auch interessieren :-)

Na, der einfachkeitshalber hier der entsprechende Abschnitt aus meinem
Makro-Buch. OK, das Layout leidet ein wenig - aber du wirst es verstehen :-)



Grafik in Textdokument einfügen
Ein Beispiel soll den Zugang zum Umgang mit Grafiken erleichtern: Per
Makrocode soll ein vorhandenes Pixelbild in den Text eingebunden werden.
Folgende Überlegungen stehen am Anfang: Ein vorhandenes Pixelbild ist
stets durch einen rechteckigen Rahmen begrenzt. Dieses Bild wird
definiert durch die Anzahl der Pixel in horizontaler und vertikaler
Richtung, für jedes Pixel hat die Datei die entsprechenden
Farbinformationen abgespeichert.
Dadurch steht der prinzipielle Weg zum Einfügen eines Bildes fest:
-   Erzeugen eines (Grafik-) Objektes
-   Das Pixelbild dem Grafikobjekt zuweisen
-   Hinzufügen des Grafikobjektes zum Textdokument (hierbei kommen
wiederum grundsätzlich zwei Wege in Frage: Hinzufügen zur Drawpage oder
Hinzufügen als Text-Content – beide sind möglich und führen zum selben
Ergebnis)
Würde man hier aufhören, ist das Grafikobjekt zwar der Seite
hinzugefügt, aber kaum sichtbar. Durch das bloße Erzeugen des
Grafikobjektes wurde dieses nämlich noch nicht dimensioniert, hätte also
die Größe 1 Pixel. Die nächsten Schritte sind also:
-   Größe des Grafikobjektes festlegen
-   Eventuell Position neu fixieren
-   Weitere Eigenschaften festlegen
Ein Grafikobjekt wird innerhalb eines Dokumentes als Instanz  des
Services com.sun.star.drawing.GraphicObjectShape erstellt. Dieses neue
Objekt bietet diverse Eigenschaften, hier einige der wichtigsten:
Eigenschaft Beschreibung
GraphicURL  Als String – Dies ist der URL zu der Quelldatei der Grafik,
also der Pfad und der Dateinamen zu der Grafikdatei. Ein GraficURL
bindet die Daten komplett ein.
GraphicStreamURLAls String – wie Graphic-URL, jedoch wird die Grafik
nicht eingebunden, sondern verknüpft, d.h., die Grafikdaten werden
jeweils neu geladenGraphicObjectFillBitmap  Als
com.sun.star.awt.XBitmap-Objekt – dieses Objekt repräsentiert die
Bitmap-Grafik
AdjustLuminance
AdjustContrast
AdjustRed
AdjustGreen
AdjustBlue  Jeweils als Short – Werden diese Eigenschaften gesetzt, so
werden die jeweiligen Kanäle mit der übergebenen Prozentzahl
nachjustiertGamma   Als Double – Wird diese Eigenschaft gesetzt, so wird
der Gammawert der Grafik auf den übergebenen Wert justiert.
TransparencyAls Short – setzt die Transparenz der Grafik. Es werden
Prozentzahlen übergeben:
100 -> 100 % = voll transparent, durchsichtig
0   ->  0 %= gar nicht transparent
GraficColorMode Enum aus com.sun.star.drawing.ColorMode – setzt den
Modus, wie die Grafik „gezeichnet“ wird:
-   STANDARD – wie Vorgabe des Ausgabemediums (also in der Regel in Farbe)
-   GREYS – Die Grafik wird in Graustufen dargestellt.
-   MONO – Halbtonverfahren – verwendete Farben sind nur Schwarz und Weiß
-   WATERMARK – als „Wasserzeichen“
Es kann nur eine URL-Angabe gemacht werden. Soll die Grafik eingebunden
werden, so werden alle Informationen innerhalb des Dokumentes
gespeichert. Die Original-Grafikdatei kann nach dem Einbinden verschoben
werden (oder gelöscht). Wird die Grafik hingegen nur verknüpft, so
werden die Daten jedes Mal dann eingelesen, wenn die Ansicht die Grafik
zeigt. Der Pfad muss dann ständig Bestand haben.
Das folgende Beispiel fügt in die bestehende Textdatei eine Grafik ein
(Sie fin-den es in der Datei BSP_Writer_18.odt. Achten Sie beim
Ausprobieren darauf, dass auch die Datei Tiger.jpg im selben Verzeichnis
wie die Beispieldatei zu finden ist):

01  Sub GrafikEinfuegen
02  Dim oDoc as Object, oGrafik as Object, oDrawpage as Object
03   Dim sURL as String, oTxtRange as Object, oBitMapGr as Object
04  Const tpm = 0.017636684
05  oDoc = ThisComponent
06  oDrawpage = oDoc.getDrawpage()
07  oTxtRange = ThisComponent.text.getEnd()
08  oGrafik = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")
09  sURL = oDoc.URL
10  Mid(sURL, InStr(sURL, RetrieveFileName(oDoc)), len(sURL), "Tiger.jpg")
11  oGrafik.GraphicURL = sURL
12  oDoc.Text.insertTextContent(oTxtRange, oGrafik, False)
13  REM  oDrawpage.add(oGrafik)
14  oGrafik.AnchorType =
com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH
15  Dim oGrafGr as new com.sun.star.awt.Size
16  oBitmapGr = oGrafik.GraphicObjectFillBitmap.GetSize
17  oGrafGr.height = oBitmapGr.height * TwipsPerPixelX * tpm *100
18  oGrafGr.width = oBitmapGr.width * TwipsPerPixelY * tpm * 100
19  oGrafik.setSize(oGrafGr)
20 End Sub

Die Schritte im Einzelnen:
In Zeile 03 wird der Umrechnungsfaktor Twips in Millimetern als
Konstante definiert. Diese Umrechnung wird später benötigt.
In Zeile 07 beschafft man sich eine Textmarke (genauer: ein
TextRange-Objekt) – hier Ende des Textes –, um dort später die 

Re: [de-users] Per Makro in Textdokument zeichnen

2005-12-28 Thread Jochen Georges
Am Mittwoch 28 Dezember 2005 11:04 schrieb Thomas Krumbein:
> Hey Jochen,
>
> Jochen Georges schrieb:

...

> > Vielen Dank für jeden Hinweis.
>
> Ich hoffe, das hilft dir erst einmal ein wenig weiter. 

Ja - danke, ich werde jetzt erst mal schmökern.

> Ich hätte ein 
> Beispiel für das Einfügen einer Grafik (eines Bildes) - für die Linie
> kann ich dir nichts bieten.

Das würde mich natürlich auch interessieren :-)

Vielen Dank und beste Grüße
Jochen





___
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [de-users] Per Makro in Textdokument zeichnen

2005-12-28 Thread Thomas Krumbein
Hey Jochen,

Jochen Georges schrieb:

> ich möchte mit einem Makro in ein Textdokument eine Linie zeichnen.
> 
> Egal welche Position angebe, die Linie erscheint immer in der linken oberen 
> Ecke des Dokumentes.

Na ja, das hängt davon ab, wie die die Grafik dem Dokument zufügst. Mit
deiner Methode (drawpage.add()) ist das richtig. Hier wird *immer* die
linke obere Ecke des Dokumentes als Ankerpunkt gewählt!
Du könntest natürlich auch die Methode
insertTextContent() des Textobjektes benutzen, dann musst du allerdings
einen Ankertyp (eine Position) mit übergeben. Auch dieses Objekt wird -
da automatisch erkannt - auf der Drawpage eingefügt. Mit dieser Methode
ist das Plazieren einfacher.

> Wie definiere ich die Seite auf der gezeichnet werden soll?
> Wie definiere ich die Position an der gezeichnet werden soll?

Siehe oben - oder, bei Nutzung deiner Methode:

Das Grafikobjekt ist nun auf jeden Fall ein Text-Content-Objekt und
besitzt diverse Eigenschaften - unter anderem einen Ankertyp (Seite,
Zeichen, Absatz,...) und eine Textumlauf (TextWarp). Siehe hierzu
com.sun.star.text.TextContent.
Interessant sind aauch die Methoden des Services
com.sun.star.text.XTextContent, welche die Plazierung innerhalb des
Textes ermöglichen.

> 
> Vielen Dank für jeden Hinweis.

Ich hoffe, das hilft dir erst einmal ein wenig weiter. Ich hätte ein
Beispiel für das Einfügen einer Grafik (eines Bildes) - für die Linie
kann ich dir nichts bieten.

Viele Grüße
Thomas
-- 
## Marketing deutschsprachiges Projekt
## http://de.openoffice.org  - www.openoffice.org
## Vorstand OpenOffice.org Deutschland e.V.
## Mitglieder willkommen: www.OOoDeV.org

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[de-users] Per Makro in Textdokument zeichnen

2005-12-28 Thread Jochen Georges
Hallo,

ich möchte mit einem Makro in ein Textdokument eine Linie zeichnen.

Egal welche Position angebe, die Linie erscheint immer in der linken oberen 
Ecke des Dokumentes.

Wie definiere ich die Seite auf der gezeichnet werden soll?
Wie definiere ich die Position an der gezeichnet werden soll?

Vielen Dank für jeden Hinweis.

Beste Grüße
Jochen

Der Code:
Sub zeichneLinie
Dim Doc As Object
Dim Page As Object
Dim LineShape As Object
Dim Point As New com.sun.star.awt.Point 
Dim Size As New com.sun.star.awt.Size

Doc = StarDesktop.CurrentComponent 
'Page = Doc.drawPages(0) ist fuer Zeichendokumente
Page = Doc.drawPage

Point.x = 900
Point.y = 200
Size.Width = 900
Size.Height = 900

RS = Doc.createInstance("com.sun.star.drawing.LineShape")
RS.Size = Size
RS.Position = Point

Page.add(RS)
End Sub





___
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]