AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
23.11.20 - 18:15:28
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino 9
| |-+  ND9: Entwicklung (Moderatoren: Axel, eknori, Thomas Schulte, koehlerbv, m3)
| | |-+  Kopiertes RT Item übernimmt Steuerungen aus Quellfeld
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Kopiertes RT Item übernimmt Steuerungen aus Quellfeld  (Gelesen 2478 mal)
Alexander 28
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 189

Meistens gibt es eine Lösung!


« am: 23.09.16 - 09:03:48 »

Hallo und guten Morgen zusammen.
Ich kämpfe mal wieder mit einem Problem, was ich in den vergangenen Jahren immer mal wieder hatte und für welches ich bis heute keine Lösung finden konnte. Vielleicht kann mir einer der hier anwesenden Programmierprofis auf die Sprünge helfen!?

Ich habe 1 Dokument welches ein RichText-Feld enthält. Dieses Feld befindet sich in der Maske  in einer Tabelle und diese Tabelle hat verschiedene Außen- und Innenrandeinstellungen.

Nun möchte ich dieses Feld via Skript in ein neues Dokument kopieren, welches ich via Skript erzeuge. Das RichText-Feld des neuen Dokumentes befindet sich aber nicht in einer Tabelle, sondern ist freigestellt direkt in der Maske vorhanden. Die Daten werden auch sauber in das neue Feld übernommen, dummerweise aber immer mit den Randeinstellungen des alten Feldes!? Irgendwie verrutscht der Inhalt im neuen Feld weil wohl offensichtlich das alte Feld in einer Tabelle stand und dadurch die Randeinstellungen andere sind als die des neuen Feldes, welches ja freigestellt ist.

Meine Frage ist, ob es irgendeine Möglichkeit gibt den Inhalt des alten Feldes zu übernehmen aber die Randeinstellungen des neuen Feldes, welche ja standardmäßig auf 2,54 cm steht, zu verwenden?

Ich habe es sowohl mit der Methode AppendRTItem als auch mit Copyitemtodocument probiert. Das Verhalten ist in beiden Fällen völlig identisch.

Zusätzlicher Hinweis: Die Routine muss im Backend ablaufen.
Herzlichen Dank im Voraus!
« Letzte Änderung: 28.09.16 - 12:26:56 von Alexander 28 » Gespeichert
Glombi
Gast
« Antworten #1 am: 23.09.16 - 10:31:53 »

Das lässt sich evtl. mit NotesRichTextParagraphStyle bewerkstelligen.

Andreas
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1195



« Antworten #2 am: 23.09.16 - 11:37:57 »

Das geht wie folgt:
1. Exportiere das Dokument als Notes-XML-Dokument, suche diese Stellen:
Code:
<pardef id='2' leftmargin='1.7875in'/>
"1.7875" ist symbolisch, hier kann alles stehen und es definiert den Abstand.
2. Ersetze das mit:
Code:
<pardef id='2' leftmargin='1in'/>
Das ist der Vorgababstand von 2,54 cm, die ID solltest du beibehalten.
3. Das modifizierte Notes-XML-Dokument wieder importieren.

Das funktioniert - ist nur etwas aufwendig.

Noch mehr Aufwand musst du betreiben, wenn bestimmte Abstände ihre Daseinsberechtigung haben Wink
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
Alexander 28
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 189

Meistens gibt es eine Lösung!


« Antworten #3 am: 26.09.16 - 07:57:36 »

@Andreas:
Mit NotesRichTextParagraphStyle habe ich es bereits mehrfach ohne Erfolg probiert. Die Steuerungsanweisungen gehen irgendwie immer verloren. Trotzdem Danke für den Tipp.

@Erik:
Damit habe ich noch nie gearbeitet. Hört sich für mich aber vielversprechend an. Werde ich die Tage mal probieren. Danke für den Hinweis.

Alles Gute für euch!
Alex
Gespeichert
Alexander 28
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 189

Meistens gibt es eine Lösung!


« Antworten #4 am: 28.09.16 - 10:49:21 »

Hi Erik. Also irgendwie habe ich jetzt ein Brett vorm Kopf. Den DXL Export des Dokumentes habe ich hinbekommen und den unveränderten Import auch.

Die Frage ist, wie komme ich jetzt an den eigentlichen Text bzw. wie führe ich die "Suchen-und-Ersetzen" Funktion aus? Ich habe es versucht mit stream.ReadText() aber sobald ich eine solche Zeile in das Skript einbaue, bekomme ich eine Fehlermeldung.

Vielleicht kannst du mir mit einem kurzen Codeschnipsel nochmal auf die Sprünge helfen.
Muss ich eigentlich zwingend eine Datei ins Filesystem exportieren und diese wieder importieren oder kann ich das auch irgendwie temporär machen ohne eine physikalische  Datei zu erzeugen?
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1195



« Antworten #5 am: 28.09.16 - 11:24:43 »

Sauber wäre es wenn man einen XML-Parser, wie z.B. NotesDOMParser zur Manipulation einsetzen würde.
In diesem Fall würde ich aber eine pragmatische, einfache Herangehensweise bevorzugen. Mit der Annahme das <pardef immer in einer Zeile steht - sollte der Aufwand nicht allzu groß sein.
Datei lokal abspeichern, dann zeilenweise durchlaufen, nach leftmargin=' und danach nach '/> suchen und Wert ersetzen.
Das Ergebnis schreibst du in eine neue Datei, welche dann importiert wird.
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
Alexander 28
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 189

Meistens gibt es eine Lösung!


« Antworten #6 am: 28.09.16 - 12:26:42 »

Klasse. Hat funktioniert. Vielen Dank für Deine Zeit!  Smiley
Alex
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: