Autor Thema: RichText in RichText EINFÜGEN  (Gelesen 45571 mal)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: RichText in RichText EINFÜGEN
« Antwort #60 am: 09.05.06 - 05:10:51 »
du könntest die Beispieldatenbank nehmen, die ich dem vorletzten Post angehängt habe.
erstes Doc enthält den Platzhalter und zweites doc die Daten, die eingefügt werden sollen.

Um einen Fehler zu produzieren, schreibe das bekannte RT:RTONE als einzigen Eintrag in das erste doc ( ohne abschließendes CRLF und ohne Zeichen vor dem Platzhalter )
« Letzte Änderung: 09.05.06 - 05:13:06 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: RichText in RichText EINFÜGEN
« Antwort #61 am: 16.05.06 - 18:22:15 »
mit ein wenig mehr code ist es sogar möglich, ohne Platzhalter zu arbeiten und einfach als Parameter ein INSERT_AFTER_TABLE oder INSERT_BEFORE_EMBEDDED zu übergeben.

Zumindest werde ich das mal in diese Richtung weiterentwickeln.

Möglicherweise liest das ja aber auch einer von IBM und sagt: "Mensch, das ist ja mal ne klasse Funktion, die bauen wir ein !". Zumindest wurde ja gestern auf der DNUG genau dies propagiert. IBM schaut sich die Blogs an und wenn die Leute meinen, daß eine bestimmte Funktion ins Produkt reinmuss, dann wird das auch gemacht.

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: RichText in RichText EINFÜGEN
« Antwort #62 am: 16.05.06 - 19:28:40 »
Wenn ich mir so die Möglichkeiten im Workplace Designer anschaue, muss ich feststellen, daß es auch dort wohl nicht möglich sein wird, RT in RT einzufügen. ...



Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: RichText in RichText EINFÜGEN
« Antwort #63 am: 17.05.06 - 07:25:19 »
Ich habe mal bei IBM einen enhancement request gestellt

Zitat
PMR Nummer 28964 032 724 wurde vom IBM Support erfolgreich erstellt. Sie enthält die folgende Kurzbeschreibung:
enhancement request: It is not possible to programmatically INSERT Richtext into Richtext. Pls. enhance the NotesRichTextItem class by a method

Call NotesRichTextItem.insertRTItem ( source as NotesRichtextItem, position as NotSureAboutType )
« Letzte Änderung: 17.05.06 - 07:27:21 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: RichText in RichText EINFÜGEN
« Antwort #64 am: 24.05.06 - 09:20:05 »
update:
Zitat
...
I have created this enhancement request on your behalf. If it is decided
to address this request, it will be listed in our fixlist database:
http://www-10.lotus.com/ldd/r5fixlist.nsf

Its unlikely that this problem will be addressed in the current
codestream, however when new releases and maintenance releases are
released you can check if this request has been addressed by searching
for SPR # BHUY6PVGW3.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: RichText in RichText EINFÜGEN
« Antwort #65 am: 18.09.06 - 19:03:40 »
Update:

In der c++ API 3.0 gibt es ü brigens eine Methode LNRichText::Insert. Damit läßt sich plain text, richtext und Objekte an eine beliebige Stelle in einem RTFeld einfügen. Und wenn ich das richtig verstehe, ist das auch im Backend möglich.

Bevor jetzt hier aber alle "Hurra" schreien; da ist noch eine Menge drumherum zu programmieren.
Sollte mein Laptop jemals mal geliefert werden, werde ich mich mal an die Umsetzung machen.

Ach ja, die API stellt auch eine methode zur verfügung um zu testen, ob ein RTFeld leer ist. Da wurde, glaube ich, hier und anderswo auch schon häufiger nach gefragt.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: RichText in RichText EINFÜGEN - die c++ Variante
« Antwort #66 am: 24.09.06 - 15:59:29 »
Habe heute ein bisschen mit der API herungespielt. Herausgekommen ist folgender Code, der den Inhalt aus einem Richtextfeld in ein anderes Richtextfeld an einer bestimmten Stelle einfügt. Die Einfügemarke ist "<RTINSERT>".

Der Code ersetzt alles Vorkommen von <RTINSERT> mit dem Inhalt des RTFeldes aus einem anderen Dokument.

Das Ganze ist selbstverständlich keine komplette Lösung, die man jetzt sofort in seine eigenen Anwendungen kopieren kann.

Code
/*
Insert richtext into richtext
Ulrich Krause, 2006
*/

#include <LNCPPAPI.H>
#include <iostream>
using namespace std; // VS2003 uses namespaces so add this line. You could prefix cout with std::cout instead.

int main(int argc, char *argv[])  {

char errorBuf [LNERROR_MESSAGE_LENGTH];

LNNotesSession	s;
LNDatabase	db;
LNDocument	docA;
LNDocument	docB;
LNDocumentArray	col;
LNRichText	rtA;
LNRichText	rtB;
LNRTCursor	cursor;
LNSTATUS   lnstatus = LNNOERROR;

LNSetThrowAllErrors( TRUE ); // get the API to trow catchable errors rather than return a status code from each operation.

try 	{

	s.Init();
	s.GetDatabase("richtext.nsf", &db, "");
	db.Open();

	db.GetDocuments(&col); // Get All documents in the database
	docA = col[0]; // Get First Document
	docB = col[1]; // Get Second Document
	docA.Open(); // Open Document
	docB.Open(); // Open Document
	docA.GetItem("Body", &rtA); // Get Body Field
	docB.GetItem("Body", &rtB); // Get Body Field
	//Get a cursor pointing at the first element in the rich text.
	rtA.GetCursor(&cursor);

		lnstatus = cursor.GotoFirst ( "<RTINSERT>" );

			//Loop through the end of the document.
			while ( lnstatus != LNWARN_NOT_FOUND) 
			{
				//Delete the original text string.
				rtA.Delete( &cursor, 10);
				//Replace the text string with the new one.
				rtA.Insert( rtB ,&cursor);
				//We have to save the doc before doing the next step
				docA.Save();
				//Go find the next string occurrence.
				lnstatus = cursor.GotoNext( "<RTINSERT>" );
			}

	docA.Close();
	docB.Close();
	}

catch (LNSTATUS error ) 	{

	LNGetErrorMessage( error, errorBuf);
	cout << "Error: " << errorBuf << endl;

	}

db.Close();
s.Term();
return 0;
}

Die Bilder zeigen das Dokument mit der Einfügemarke, den RT, der eingefügt werden soll und das Ergebnis.
Es werden alle Objekte eingefügt, alle Formatierungen bleiben erhalten.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: RichText in RichText EINFÜGEN
« Antwort #67 am: 15.10.06 - 15:37:53 »
Der guten Ordnung halber hier noch die komplette Lösung zum Download http://www.eknori.de/archives/348
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz