Re: [de-users] Per Makro in Textdokument zeichnen
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
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
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
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
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
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
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
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
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
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
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]