Domino 9 und frühere Versionen > ND9: Entwicklung

[Gelöst] Formelsprache - Prüfen, of RichTextField leer ist

<< < (2/3) > >>

Flachmann:
Ich weiß, dass das keine wirklich Lösung ist, aber vielleicht hilft es schon:  8)

In meinen Fällen war es immer so, dass in diesen "Pflicht-Richtext-Feldern" auch klärender Text eingegeben werden sollte. Ein Dateianhang oder ein Bild alleine war nicht ausreichend.

Es genügte darum zu prüfen, ob überhaupt ein Text enthalten ist. - LotusScript® NotesUIDocument.FieldGetText("RTField") genügt dafür und hat den Charme, dass das Dokument nicht einmal gespeichert sein muss um das RT-Feld zu prüfen.

Wie geschrieben, das ist keine wirkliche 100%-Lösung, weil ein Feld mit Dateianhang, eingefügtem Bild oder Objekt, aber ohne Text, immer leer wäre. Aber für meine Anwendungen hat das bislang immer gepasst. "Pflicht-Richtext-Feldern" hat man ja auch eher selten.

SlyFox:
Hallo Lachmann,

in dem RT Feld wird eine Excel-Datei oder direkt ein Screenshot eingefügt, sonst nichts.

Das Feld ist kein Pflichtfeld, aber abhängig davon, ob das Feld einen Wert enthält oder nicht, wird eine bestimmte Aktion ausgeführt.

Gibt es denn keine Möglichkeit, die Größe des RT Feldes auszulesen?

Viele Grüße

Christoph

koehlerbv:
Doch, das gibt es natürlich in der Property der Klasse NotesRichTextItem bzw. NotesItem (von dem wird es vererbt). Aber: Dieser Wert steht erst nach der Speicherung des Dokuments zur Verfügung - und ein "leeres" RichTextItem hat abhängig von diversen Rahmenumständen auch unterschiedliche Grössen! Dies muss beachtet werden, sonst kann man die Prüfung auch bleiben lassen.

Bernhard

Flachmann:
Ok, das war auch nur eine Idee.

So wie Du es brauchst, geht nicht einfach. Wie Bernhard schon schrieb: das Dokument muss erst gespeichert werden, bevor Dir in LotusScript® die RT-Eigenschaften zur Verfügung stehen. Ist leider so und macht das ganze Handling kompliziert.

Vielleicht überlegst Du Dir etwas anderes. Z.B., dass man den das RT-Feld nur anzeigt, wenn ein Schalter vorher gewählt wurde. Dann wird der Weg "mit Anhang" gewählt. Ist natürlich weniger elegant, aber auf jeden Fall einfacher zu handlen.

Peter Klett:
Wenn abhängig von dem Inhalt eine Aktion ausgeführt wird, finde ich es nicht schädlich, wenn das Dokument zuvor gespeichert wurde. Sollte die Aktion z.B. eine Mail mit einem Link auf das Dokument sein, wäre es kontraproduktiv, die vor dem Speichern des Dokuments zu versenden.

Um einen  Dateianhang in dem Richtextfeld zu erkennen, kannst Du die EmbeddedObjekts verwenden


--- Code: ---Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Dim doc As NotesDocument
Set doc = uidoc.Document
Dim rtitem As NotesRichTextItem
Set rtitem = doc.GetFirstItem ("Body")
Dim flag As Integer
If Isarray (rtitem.EmbeddedObjects) Then
flag = True
End If
Msgbox Flag
End Sub

--- Ende Code ---

Das ist dann schon mal sauber. Für den Screenshot könntest Du, wie schon von Dir erwähnt, rtitem.ValueLength verwenden. Unter der Annahme, dass der Screenshot größer als nur ein paar Pixel ist, kannst Du da ja einen recht großen Wert als Grenze nehmen. In einem Test hatte mein leeres Item eine Länge von 104, mit einem Screenshot des gesamten Bildschirms um die 41000. Da würde ich mir die Größe des leeren Feldes vorab ausgeben lassen und dann vielleicht das Doppelte als Erkennwert verwenden. Natürlich könnte auch jemand nur Text eintragen, dann bekommst Du natürlich auch ein größeres Item.

Eventuell könntest Du noch mit DXL-Export genauer untersuchen, aber da habe ich wenig bis keine Erfahrung mit.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln