Autor Thema: RichText. formatierten Text kopieren  (Gelesen 5617 mal)

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
RichText. formatierten Text kopieren
« am: 26.06.09 - 13:07:07 »
Hallo,

wie kann ich denn formatierten Text aus einem RT in ein anderes kopieren ?

Würde ungerne über des Frontend gehen.

Über rtItem1.appendRTItem(rtItem2) geht es nicht, weil er den Inhalt ja immer ans Ende packt. Ich möchte aber den Inhalt an die aktuelle Stelle des Cursors kopieren.
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: RichText. formatierten Text kopieren
« Antwort #1 am: 26.06.09 - 13:50:16 »
Das geht NICHT mit Bordmitteln. Ulrich hat mal einen Versuch gestartet, weil wir das in HELP auch gerne gehabt hätten, aber wir sind daran gescheitert. MIDAS kann das.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: RichText. formatierten Text kopieren
« Antwort #2 am: 26.06.09 - 14:13:52 »
Wer lesen kann ist klar im Vorteil ... habe das "nicht" bei Frontend überlesen.
So würde es im Frontend gehen...
Code
			'Copy Body Item
			Call uidoc.GoToField( "Body" )
			Call uidoc.SelectAll
			Call uidoc.Copy
			
			'Paste to Body2 Item
			Call uidoc.GotoField("Body2")
			Call uidoc.Paste
« Letzte Änderung: 26.06.09 - 14:15:39 von Gandhi »
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: RichText. formatierten Text kopieren
« Antwort #3 am: 26.06.09 - 14:21:18 »
So würde es im Frontend gehen...
Code
			'Copy Body Item
			Call uidoc.GoToField( "Body" )
			Call uidoc.SelectAll
			Call uidoc.Copy
			
			'Paste to Body2 Item
			Call uidoc.GotoField("Body2")
			Call uidoc.Paste


Was spricht dagegen, die docs im Backend zu holen über work.editdocument zu öffnen, im Frontend zu kopieren und die frontend docs wieder zu schließen? Im schlimmsten Fall sieht der User ein kurzes Flackern, denke ich.
Gruß
Demian

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: RichText. formatierten Text kopieren
« Antwort #4 am: 26.06.09 - 14:22:28 »
Habe eine nun was getüffelt mit Maske die nur das gewünschte Feld beinhaltet und dann per RenderToRichText den Inhalt formatiert kopiert bekommen, leider nicht an der Stelle wo ich den Cursor geparkt habe

Also habe mir das passende Dokument geholt

Form auf Dummy-Maske angepasst in der nur das RT erscheint

und dann Dokument.RendertoRichTextItem(rtTMP)

Aber man kann das RenderToRichText nicht innerhalb eines BeginInsert benutzen, Ärgerlich, aber vllt hilft euch das ja auch schon weiter
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: RichText. formatierten Text kopieren
« Antwort #5 am: 26.06.09 - 14:24:09 »
Gegen Frontend spricht, dass ich den Vorgang vllt 20 oder mehr wiederholen muss. kackt mir der code irgendwo ab muss ich per ErrorHandling sicherstellen, dass wirklich wieder alles zu geht.

Naja und Backend ist mir einfach lieber, will nicht das der User denkt dass sein Bildschirm flackert
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: RichText. formatierten Text kopieren
« Antwort #6 am: 26.06.09 - 16:38:41 »
Zitat
muss ich per ErrorHandling
Äh...wie schrecklich.... ;)
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: RichText. formatierten Text kopieren
« Antwort #7 am: 26.06.09 - 18:08:23 »
habe mir die Klassen eben mal näher angeschaut und etwas rumprobiert. Wenn du ein Quelldoc mit zum Beispiel einer Zeile rot formatiertem Text hast, kannst du die Formatierung über NotesRichTextRange in ein neues doc übernehmen:

   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim docSource As NotesDocument
   Dim rtitemSource As NotesRichTextItem
   Dim rtrangeSource As NotesRichTextRange
   Dim styleSource As NotesRichTextStyle   
   Dim navsource As NotesRichTextNavigator
   Dim Text As String
   
   Dim docNew As NotesDocument
   Dim rtitemNew As NotesRichTextItem
   Dim rtrangeNew As NotesRichTextRange
   
   Set db = s.CurrentDatabase
   Set view = db.GetView("lkpBodyDoc")
   
   'get old
   Set docSource = view.GetFirstDocument
   Set rtitemSource = docSource.GetFirstItem("Table")
   Set rtrangeSource  = rtitemSource.CreateRange
   Text = rtrangesource.TextRun
   Set StyleSource = rtrangeSource .Style   
   
   'set new
   Set docNew = db.CreateDocument
   docNew.form = "libTest"
   docNew.Nr = "2"
   Set rtitemNew = docNew.CreateRichTextItem("Table")
   Call rtitemNew.AppendText(Text)
   Set rtrangeNew = rtItemNew.CreateRange
   Call rtrangeNew.SetStyle(StyleSource)
   
   Call docNew.Save(True,False)


Das drumherum fehlt halt noch.

EDIT: Stelle gerade fest, wenn der Debugger angeschaltet ist übernimmt er die Formatierungen nicht. Nur wenn der aus ist. Zumindest bei mir (Version 7.0).
« Letzte Änderung: 26.06.09 - 18:43:11 von Demian »
Gruß
Demian

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: RichText. formatierten Text kopieren
« Antwort #8 am: 26.06.09 - 22:50:26 »
Könntest du nicht das RT-Item aus Doc1 und Doc2 in ein TempDoc kopieren (ggf. umbenennen) , dann die Form auf eine Dummyform setzen welche Doc2Rtitem und darunter Doc1Rtitem enthält und dann per renderToRtItem das TmpDoc wieder ins RT-Item von Doc1 zurückrendern. Dies dürfte dir aber zu 99% die Randeinstellungen irgendwie verschieben. Hier ist probieren angesagt.
(Ich tipp mal, man muss den Rand auf 1,905 stellen, das ist der Wert, dass bei einer Dialogbox, welche 100% breit ist, kein horizontaler Scrollbalken kommt)

Eine andere Möglichkeit wäre noch, beide Dokumente in einen DXL-Stream zu exportieren und die RT-Items per DOM-Parser oder XSLT zu "verwursteln"

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: RichText. formatierten Text kopieren
« Antwort #9 am: 27.06.09 - 06:39:04 »
Alle Lösungswege die hier versucht werden, haben wir ebenfalls versucht. Fakt ist, es ist, ausser mit der C API, die Geniisoft verwendet, NICHT möglich ein RTITEM im Backend an eine BELIEBIGE Stelle in ein anderes RTITEM einzuügen.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: RichText. formatierten Text kopieren
« Antwort #10 am: 27.06.09 - 13:40:36 »
...NICHT möglich ein RTITEM im Backend an eine BELIEBIGE Stelle in ein anderes RTITEM einzuügen...

er wollte doch "nur" formatierten Text an eine beliebige Stelle kopieren nicht das Ganze Item, oder? Das müsste mit NotesRichTextRange in Verbindung mit NotesRichTextNavigator (rtrange.setbegin(nav)) doch eigentlich gehen.
Gruß
Demian

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz