Autor Thema: Frage zu RichtextFeld  (Gelesen 5213 mal)

Offline arieger

  • Aktives Mitglied
  • ***
  • Beiträge: 169
  • Geschlecht: Männlich
Frage zu RichtextFeld
« am: 05.03.15 - 16:03:09 »
Hallo,

habe ein Frage zum Thema Richtextfeld. Wenn ich ein Richtextfeld in ein anderes Richtextfeld übernehme, klappt das soweit ganz gut mit dem "AppendRTItem". Allerdings ist der neueste Eintrag dann immer unten. (append-klar).

Nun möchte ich aber den neuesten Eintrag im ganz oben im Ziel-RTFeld haben ????

Hat mir jemand einen Tipp?

Viele Grüße
Anton


Sub Click(Source As Button)
   Dim w As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim docA As NotesDocument
   Dim rtitemA As Variant
   Dim rtitemB As Variant
   Dim rtnav As NotesRichTextNavigator
   Set uidoc = w.CurrentDocument
   Set docA = uidoc.Document
   Call uidoc.Save
   
   Set rtitemA = docA.GetFirstItem( "Serviceauftrag" )
   Set rtitemB = docA.GetFirstItem( "Historie" )
   
   Call rtitemB.AddNewLine(1)   
   Call rtitemB.AppendText( "-> aktualisiert am " + Now + ":  ======" )
   Call rtitemB.AddNewLine(1)      
   Call rtitemB.AppendRTItem( rtitemA )
   
'''''''''
   Set rtItem = docA.ReplaceItemValue("Serviceauftrag", "")
   docA.SaveOptions = "0"
   Call docA.Save(False, True)
   'Call uidoc.Close
   
End Sub
Das Nasshorn und das Trockenhorn, spazierten durch die Wüste,
da stolperte das Trockenhorn uns Nasshorn sagte – siehste!

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Frage zu RichtextFeld
« Antwort #1 am: 05.03.15 - 16:17:40 »
Guck dir mal die BeginInsert Methode in der Designer Hilfe an.
Zitat
Changes the insertion position from the end of the rich text item to the beginning or end of a specified element.
Hinweis  This method is new with Release 6.
Defined in
NotesRichTextItem
Syntax
Call notesRichTextItem.BeginInsert( element, [ after ] )

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline arieger

  • Aktives Mitglied
  • ***
  • Beiträge: 169
  • Geschlecht: Männlich
Re: Frage zu RichtextFeld
« Antwort #2 am: 06.03.15 - 13:30:37 »
Hallo Chris,
danke für die Info. Daran bin ich schon am testen. Klapp aber noch nicht so ganz, vor allem wenn ein RTF leer ist. Versuche es einfach weiter.
Viele Grüße Anton
Das Nasshorn und das Trockenhorn, spazierten durch die Wüste,
da stolperte das Trockenhorn uns Nasshorn sagte – siehste!

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Frage zu RichtextFeld
« Antwort #3 am: 06.03.15 - 14:49:59 »
AppendRTItem ignoriert das begininsert.
Du könntest mit NotesUIDocument.ImportItem arbeiten, und mittels uidoc.GotoField( "Body" ) versuchen, den Cursor ganz nach oben zu stellen... Sonst musst Du das RTItem komplett neu aufbauen:
- Hilfsdokument erstellen
- Hilfsrichtextitem erstellen
- Dein RTItem appenden
- Original RTItem appenden
- Hilfsrichtext zurück ins Dokument bringen (geht über SelectAll und ImportItem oder per ReOpen...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline arieger

  • Aktives Mitglied
  • ***
  • Beiträge: 169
  • Geschlecht: Männlich
Re: Frage zu RichtextFeld
« Antwort #4 am: 06.03.15 - 15:34:43 »
Hallo Thorsten,
danke für die Info. Das mit dem UI geht nicht ganz so gut. Ich versuche es zu erklären:
das ist eine Datenbank , in der man Serviceaufträge erfasst. Das UIDoc ist geöffnet, dann kommt ein RTITEM_A, das ist bearbeitbar, hier gibt der User seinen Text oder Hardcopies ein.
Dann drückt er den Aktualisierungsbutton.

Nun soll das RTITEM_A komtplett nach RTITEM_B geschrieben werden und zwar so, das immer der aktuellste Eintrag oben ist. (deswegen scheitere ich mit append).

Das RTITEM_B muß berechnet sein, damit man nach der Eingabe nichts mehr ändern kann und auch eine Historie aufbaut.

Wäre das RTITEM_B bearbeitbar, ginge auch diese Formel:
@Command([EditGotoField];"BodySource");
@Command([EditSelectAll]);
@Command( [EditCopy] );
@Command([EditGotoField];"BodyTarget");
@Command( [EditPaste] )

Leider ist das RTITEM_B berechntet.

Das mit den Hilfedoc, meinst Du da Profildokumente oder ein Echtes erzeugen udn wieder löschen? (stark frequentierte DB ???)
Viele Grüße   Anton
Das Nasshorn und das Trockenhorn, spazierten durch die Wüste,
da stolperte das Trockenhorn uns Nasshorn sagte – siehste!

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Frage zu RichtextFeld
« Antwort #5 am: 06.03.15 - 15:51:27 »
Dafür kannst Du auch ein echtes Dokument nehmen. Ich würde ein Dokument für jeden User verwenden (neu erstellen, falls noch nicht vorhanden, sonst das alte wiederverwenden (RTItem aus Dokument löschen)).

Diese Dokumente werden nirgendwo angezeigt und liegen nur herum, um für diese Aktion benutzt zu werden. Löschen würde ich die nicht, das bläht die Datenbank auf und den Usern sollte auch das Löschrecht fehlen.

Profildokumente gehen auch, ist reine Geschmacksache.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Frage zu RichtextFeld
« Antwort #6 am: 06.03.15 - 15:51:59 »
Du musst das "Hilfedoc" nicht speichern (und damit auch nicht wieder löschen)... nur ein rtitem.Update ist nötig, damit Du das gesamte Richtextitem mit allen Änderungen bekommst.

Wenn Dein "History"- Feld berechnet ist, dann wirst Du über ein ReOpen des Dokuments nicht drumrum kommen...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Domenik L.

  • Frischling
  • *
  • Beiträge: 1
Re: Frage zu RichtextFeld
« Antwort #7 am: 09.03.15 - 08:41:37 »
Hallo zusammen,

hab hier eine Lösung die funktioniert, dazu benötigt man aber 3 RT-Felder. Hier mal das Script, hoffe das hilft weiter.

Sub Click(Source As Button)
   Dim w As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim docA As NotesDocument
   Dim rtitemA As Variant
   Dim rtitemB As Variant
   Dim rtitemC As Variant   
   Set uidoc = w.CurrentDocument
   Set docA = uidoc.Document
   Call uidoc.Save
   
   Set rtitemA = docA.GetFirstItem( "Serviceauftrag" )
   Set rtitemB = docA.GetFirstItem( "Zwischenfeld" )
   Set rtitemC = docA.GetFirstItem( "Historie" )
   
'''''''''   
   'Schritt 1.1
   Call rtitemB.AppendRTItem( rtitemC )
   Set rtItem = docA.ReplaceItemValue("Historie", "")
   'Schritt 1.2
   Call rtitemC.AddNewLine(1)      
   Call rtitemC.AppendText( "-> aktualisiert am " + Now + ":  ==========================================================" )
   Call rtitemC.AddNewLine(2)      
   Call rtitemC.AppendRTItem( rtitemA )
   'Schritt 1.3
   Call rtitemC.AppendRTItem( rtitemB )
'''''''''
   'Leere RT-Felder A+B löschen und schließen
   Set rtItem = docA.ReplaceItemValue("Serviceauftrag", "")
   Set rtItem = docA.ReplaceItemValue("Zwischenfeld", "")
   docA.SaveOptions = "0"
   Call docA.Save(False, True)
   Call uidoc.Close
   
End Sub

MfG
Domenik

Offline arieger

  • Aktives Mitglied
  • ***
  • Beiträge: 169
  • Geschlecht: Männlich
Re: Frage zu RichtextFeld
« Antwort #8 am: 10.03.15 - 09:23:14 »
Supersache,
vielen Dank für die Tipps. Funktioniert.
Viele Grüße
Anton :)
Das Nasshorn und das Trockenhorn, spazierten durch die Wüste,
da stolperte das Trockenhorn uns Nasshorn sagte – siehste!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz