Autor Thema: RTF Feld an mehreren Positionen anzeigen...  (Gelesen 2380 mal)

Offline RKuehle

  • Junior Mitglied
  • **
  • Beiträge: 80
  • Geschlecht: Männlich
RTF Feld an mehreren Positionen anzeigen...
« am: 14.04.11 - 15:30:47 »
Hallo Forum,

meine Frage hat bestimmt eine gaaanz einfache Lösung, aber ich habe im Moment keine Idee dazu:

In einer Maske habe ich ein RTF-Feld welches durch Nutzer befüllt werden kann. In aller Regel ein jpg-Image.
Nun möchte ich den Feldinhalt (also das Image) nochmals an anderer Stelle in der Maske anzeigen.
Dort soll es allerdings wirklich nur dargestellt werden. Der Inhalt sollte also auch nur in einem Feld gespeichert werden müssen.

Hat jemand ein Stichwort, Wegweiser für mich ???

Grüße Ricardo


Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: RTF Feld an mehreren Positionen anzeigen...
« Antwort #1 am: 15.04.11 - 14:24:32 »
Mmmh - dumm, dass sich sich ein RT-Feld nicht per Formel berechnet  ;)

Folgendes habe ich mal auf die Schnelle probiert und es klappt, benötigt aber Feinschliff bzw. eine Idee, wo das Duplizieren am besten hinpasst:

Maske mit 2 Richtext-Feldern "Body1" & "Body2", erstes ist bearbeitbar, letzteres berechnet mit Formel @ThisValue (nur, damit es nicht bearbeitbar ist und etwas im Formelfenster steht).

Dann
Code
Sub Postsave(Source As Notesuidocument)

  Dim oAktDoc As NotesDocument
  Dim rt1 As NotesRichTextItem
  Dim rt2 As NotesRichTextItem

  Set oAktDoc = Source.Document
  Set rt1 = oAktDoc.GetFirstItem("Body1")
  Set rt2 = oAktDoc.GetFirstItem("Body2")

  If Not rt2 Is Nothing Then rt2.remove
  Set rt2 = New NotesRichTextItem(oAktDoc, "Body2")
  rt2.AppendRTItem rt1

  oAktDoc.Save True, False

End Sub

Nach Strg+S sind die Änderungen natürlich nicht sichtbar, Dok muss geschlossen & neu geöffnet werden, aber wenn man diese Idee z.B. in eine Schaltfläche packt, die das auch noch übernimmt, kommst Du Deinem Ziel näher.
Dumm nur, dass dann sämtliche RT-Inhalte doppelt / mehrfach im Dokument gespeichert sind (was mich selbst daran hindern würde, diese Idee je zum Einsatz zu bringen  ;)).
Und: Der Codeschnipsel enthält keinerlei Errorhandling (wird hier richtigerweise gern kritisiert, aber das Beispiel soll auch nur eine Idee liefern) und kümmert sich auch nicht um irgendwelche $File-Items.


Schönes WE!
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline RKuehle

  • Junior Mitglied
  • **
  • Beiträge: 80
  • Geschlecht: Männlich
Re: RTF Feld an mehreren Positionen anzeigen...
« Antwort #2 am: 16.04.11 - 17:22:00 »
Ich habe jetzt folgende Lösung gefunden. Vielleicht kann ja jemand sagen ob das so okay ist.

Grüße Ricardo

Bild -> das wirkliche Bild als RTF mit embedded Object
Bild_pseudo -> das "Anzeigefeld" des Bildes an anderer Position, auch RTF
Beide Felder sind normal bearbeitbar

Hier der Code im PostOpen des Dokumentes:

On Error Goto ProcessError
' Item und doc werden gebraucht um per Savetodisk das "Anzeigefeld" nicht zu speichern
   Dim item As NotesItem
   Dim doc As NotesDocument
   Set doc=source.Document
   Set item=doc.GetFirstItem("Bild_pseudo")
   item.SaveToDisk = False
' Hier gehts eigentlich los
   currentfield = source.CurrentField
' EditMode muss sein, da ansonsten das ganze Dokument selected wird
   If source.EditMode = False Then source.EditMode = True
   Call source.GotoField("Bild")
   Call source.SelectAll
' Die vorige Zeile bringt Fehler 4407 wenn Feld Bild leer ist, dann processError
   Call source.Copy
   Call source.GotoField("Bild_pseudo")
   Call source.Paste
   Call source.refresh
   Exit Sub
processError:
   If Err = 4407 Then Exit Sub

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: RTF Feld an mehreren Positionen anzeigen...
« Antwort #3 am: 16.04.11 - 18:44:46 »
Nicht schön an der Lösung ist, dass das Dokument bearbeitet werden muss. Damit muss jeder Leser des Dokuments Autorenrechte auf dem Dokument haben.

Was es an Replizierkonflikten gibt, wenn jeder "Leser" das Dokument beim Verlassen speichert, kann ich so nicht beurteilen.

Ich hatte mal damit experimentiert, ein Bild aus einem anderen Dokument im geöffneten Dokument anzuzeigen. Fiel mir gerade ein, hab da mal in der "Kramkiste" gesucht und das gefunden:.

Ich nahm ein Textfeld "berechnet zur Anzeige" mit sinngemäß dieser Formel:

tmp := @DbLookup (""; ""; "ansicht"; Schlüsselfeld; "Bild");
@If (@IsError (tmp); ""; tmp)

Das lief unter Notes 5 bis zu einer gewissen Größe von Bildern zuverlässig.

Vielleicht kannst Du versuchen, mittels DBLookup aus dem gleichen Dokument das Bild zu berechnen? Schlüssel könnte die UniversalID sein.

EDIT: Noch viel einfacher: Nimm ein Textfeld, berechnet zur Anzeige, und schreibe in den Vorgabewert den Namen des Richtextfeldes (also bei Dir: Bild). Habe ich in der "Kramkiste" ausprobiert, funktioniert (allerdings Notes 5, müsste sonst die andere Maschine booten ...).

EDIT 2: Funktioniert auch noch unter 7.0.3 und 8.5.1, das Dokument kann aber nicht gespeichert werden, wenn das Bild zu groß ist (Fehlermeldung: Feld ist zu groß (32K)). Ein Screenshot in Paint als jpg-Datei gespeichert und davon so etwa 9 x 9 cm ausgeschnitten, lässt sich speichern. Habe dann das Display-Feld problemlos mehrfach kopiert, es zeigt mir die Bilder auch noch öfter im selben Dokument an. Es hängt jetzt von Deinem Einsatzzweck ab, ob das genügt (Passbilder, kleine Produktfotos o.ä. könnten gehen).
« Letzte Änderung: 17.04.11 - 07:38:53 von Peter Klett »

Offline RKuehle

  • Junior Mitglied
  • **
  • Beiträge: 80
  • Geschlecht: Männlich
Re: RTF Feld an mehreren Positionen anzeigen...
« Antwort #4 am: 17.04.11 - 14:16:05 »
Hallo Peter,

du hast völlig recht. Autorenzugriff für alle Nutzer nur um reinzugucken ist unsinnig. Zumal, es ist wirklich eine Personal-DB, da sind die Leute sowieso sehr sensibel!

Dass man in einem reinen Textfeld auch Inhalte aus RTF-Feldern anzeigen kann, war mir so nicht bekannt. Daher ja der ganze Aufriss ;-( Und wieder was gelernt ;-)

Die Bilder sind wirklich eher "Passfotos", so gibts bei der Größe keine Probleme.

Ich sag nur: Herzlichen Dank für den Hinweis und deine Tests !!!

Grüße Ricardo


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz