-----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+unsubscr...@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