-----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.