Date: prev next · Thread: first prev next last
2015 Archives by date, by thread · List index


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hallo Fred,

ich habe da etwas liegen gehabt, das hier gepostet wurde - gleiches
Problem:
http://www.libreoffice-forum.de/viewtopic.php?f=10&t=14988&sid=e3879a86d8d8b781c054fddc6e5d362c#p35780

Daraus habe ich jetzt den Code so übernommen, dass er auch zu dem
passt, was ich im Handbuch hinterlegt habe. Hier jetzt einfach einmal
der gesamte Code zum Füllen der Textfelder mit Löschmöglichkeit, wenn
ein Textfeld keinen Inhalt hat:
- ---------------
SUB Textfelder_Fuellen
'Zuerst muss im Writer eine Vorlage mit Platzhaltern erstellt werden.
'Einfügen → Feldbefehl → Funktionen → Platzhalter
'Den Platzhalter so nennen, wie die entsprechende Spalte in der
Tabelle / in der Abfrage heißt, deren Inhalt der Platzhalter annehmen
soll.
'Für einfache Zwecke einfach nur "Text" als Typ wählen, mit den
anderen Varianten, z.B. "Grafik" kann man dann fortgeschrittenere
Sachen umsetzen.
'In dem Makro Pfad zur Vorlage hinterlegen und vom Makro die
Platzhalter befüllen lassen.
'Es wird ein neues Dokument gegründet, das direkt mit den Inhalten
gefüllt wird.
'Das Dokument wird geöffnet, ist noch nicht gespeichert.
        DIM oForm AS OBJECT
        DIM oColumns AS OBJECT
        DIM oDB AS OBJECT
        DIM oNewDoc AS OBJECT
        DIM oTextfields AS OBJECT
        DIM oTextfield AS OBJECT
        DIM oViewCursor AS OBJECT
        DIM stColumnname AS STRING
        DIM stDir AS STRING
        DIM stContent AS STRING
        DIM inIndex AS INTEGER
        oForm = thisComponent.Drawpage.Forms.MainForm   'Das Hauptformular wird
angesteuert. Hier könnte auch die Lage des auslösenden Buttons das
Formular selbst ermitteln.
        oColumns = oForm.Columns
        oDB = ThisComponent.Parent      ' Der Zugriff auf die URL ist nicht vom
Formular aus direkt möglich. Es muss auf den darüberliegenden Frame
der Datenbank Bezug genommen werden.
        stDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title))     ' Der
Titel der Datenbank wird von der URL abgetrennt.
        stDir = stDir & "Beispiel_Textfelder.ott"
        REM Vorlage öffnen
        DIM args(0) AS NEW com.sun.star.beans.PropertyValue
        args(0).Name = "AsTemplate"
        args(0).Value = True
        oNewDoc = StarDesktop.loadComponentFromURL(stDir,"_blank",0,args)
        REM Textfelder holen
        oViewCursor = oNewDoc.CurrentController.getviewCursor()
        oTextfields = oNewDoc.Textfields.createEnumeration
        DO WHILE oTextfields.hasMoreElements
                oTextfield = oTextfields.nextElement
                IF
oTextfield.supportsService("com.sun.star.text.TextField.JumpEdit") THEN
                        stColumnname = oTextfield.PlaceHolder   'Placeholder ist Benennung
für das Textfeld
                        IF oColumns.hasByName(stColumnname) THEN        'Wenn der Name des
Textfeldes gleich dem Spaltennamen der Daten ist, die dem Formular
zugrunde liegen ...
                                inIndex = oForm.findColumn(stColumnname)
                                stContent = oForm.getString(inIndex)
                                oViewCursor.GotoRange(oTextfield.Anchor,false)
                                oViewCursor.String = stContent
                                IF stContent = "" THEN
                                        oViewCursor.goRight (1, true) 'Mit dieser und der folgenden 
Zeile
wird der Platzhalter und das anschließende Zeichen gelöscht
                                        oViewCursor.String = ""
                                END IF
                        END IF
                END IF
        LOOP
END SUB
- ---------------------------

Ist natürlich schlecht hier heraus zu kopieren. Schau Dir einfach
einmal alle Zeilen an, in der der ViewCursor vorkommt. Der Inhalt wird
jetzt über den Cursor in die Vorlage übertragen, nicht direkt in die
Platzhalter geschrieben.

Gruß

Robert
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBAgAGBQJV036UAAoJELDKYwaoS9AIidgP/3TIuEs/vFpRALwCKiPbdDsX
+KIcrV94Zc3nfa4CaeeJ+5Ez0SKOszJPCMfNh8wwhTOx5XrDKAjJfqphCMiO8H88
FZDeO/vQcXPUPIgTYrUpMea4ILDJlvS9zgcuL+HNWpCkOkf0336IfHd3i5TK7Fq0
cWnNpDdSufreJyVqxvw5eHb0vRA8m6zf+XQYHr/FD00MOFR3MoaGl+4GbeW6Wqbg
Fa9SRuPBKHXAUnviw1j7m/BQEjanOM1KmSuUxxEbJqnZyJxyd+ir0SbB3YuhaLf+
pNWzRojGYG6H7wJT7A26cuv2tduWsQmawDTDdspbeXD66mUzQLpw0tckp9j37E+m
7a93o0skwoXGt5R+CjKmBwq7+ZwZfz7teX91y7jRCsVlU5eSLVs/GJ87z4g3mGyo
3eLj9tByFXaOxfLOmUqtRx4B+thh0/Jtpeorh1rKene/BTolOSbick+PIqOUcUY4
jfE5edtZFtz8xSCyoqrJc3EwDVD24NXS09Rn+UJ7czNoBK5eX7uLwj4qrTwlfMva
QmIO3mKzgoI7vBaBNaGkFN9G7ItoXoSd04Mkkc4mgp+taxJpmQmP0085s+I4E+Tm
V22I7InJroA7vlAW1ICX0KcBk/jkzi7sAXX8h8l2Guh1BSHRiNqv4yo8TXr/d1XT
vN7PYkH21b4F0EofCV3h
=TRRW
-----END PGP SIGNATURE-----

-- 
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.