Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: rocky29 am 05.07.04 - 14:53:36
-
Hallo!
ich suche nach einer Möglichkeit ein JPEG Bild in ein RichText - Feld zu importieren, so daß es beim öffnen der Maske angezeigt wird.
Hab es schon mit EmbedObject probiert, aber da bekommt man bestenfalls einen Link zum Bild hin, bzw. ein Attachement.
-
Ich denke sowas läßt sich nur mit C-API lösen. Hier gibt es ein Produkt siehe http://www.peopleware.be/peopleware/public/tnreg.nsf/dft?openframeset
-
Denke auch, das ist so, und da kann man an die traditionellen Richt-Text Gurus denken:
Normunds Kalnberzins mit rtlib http://www.rtlib.com
oder Ben Langhinrichs mit Midas http://www.geniisoft.com
-
Und beide Aussagen sind leider im Prinzip richtig, weil du deine Version nicht mitgegeben hast. Ab einer definierten V5irgendwas geht es nämlich auch ohne C und Midas.
Code folgt wenn ich wieder daheim bin.
Thomas
-
Also hundertpro im Backend geht das nicht, dann bleiben wirklich nur C-API, Midas und ähnliches übrig, aber wenn du damit leben kannst das ein Backend Dokument erzeugt wird, das Ganze ins Frontend geholt wird und anshcließend SOFORT wieder geschlossen, dann geht das hier:
Set newdoc = mydb.createdocument()
' Fill all the fields in the document
newdoc.form = "frmPictureData"
newdoc.keyTyp = descriptiondoc.KeyTyp(0)
Set stichwoerter = descriptiondoc.GetFirstItem( "keyStichwort" )
Call stichwoerter.CopyItemToDocument( newdoc, "txtStichwort" )
newdoc.keyKategorie1 = descriptiondoc.KeyKategorie1(0)
newdoc.keyKategorie2 = descriptiondoc.KeyKategorie2(0)
newdoc.keyKategorie3 = descriptiondoc.KeyKategorie3(0)
newdoc.keyKategorie4 = descriptiondoc.KeyKategorie4(0)
newdoc.keyKategorie5 = descriptiondoc.KeyKategorie5(0)
newdoc.txtBeschreibung = descriptiondoc.txtBeschreibung(0)
' Get the file that has to be attached and attach it
DirFile = Directory + Filename
' Check if the size of the object is equal or bigger then the defined Size
sizeinbytes = Filelen(DirFile)
If sizeinbytes >= Cdbl(descriptiondoc.numMinPictureSize(0)) * 1024 Then
' Compute the rest of the fields
success = newdoc.computewithform(False,False)
' save if computing was correct
If Success = True Then
Call newdoc.save(True,True)
End If
Set uiDoc = ws.EditDocument( True, newdoc )
Call uiDoc.GotoField( "rtxdata" ) ' or whatever the RTF field is called for the photo
Call uiDoc.Import( "JPEG Image", DirFile ) ' assumes the fileName field includes a full path to the file!!!
Call uiDoc.Save()
Call uiDoc.Close(True)
Set uidoc =Nothing
Wobei es auf den Uidoc.Close(True) ankommt.
-
weil du deine Version nicht mitgegeben hast.
Kann auch sein dass er R6 nutzt. Er hatte nur versehentlich in "BestPractices" gepostet, daher hab ich den Thread verschoben. Da ohne Versionsangabe habe ich dann R5 gewählt.
-
also wenn Notes 6, dann geht das im Backend mit den XML/DXL-Klassen (exportieren, Bild einfügen, importieren; hört sich kompliziert an, ist es aber nicht, kann es aber werden, je nachdem, was außer dem Bild noch so alles in besagtes Feld muss).
Theoretisch zumindest, habs selbst noch nicht probiert.
-
Wobei es auf den Uidoc.Close(True) ankommt.
Für was steht denn das (True), Thomas?
Wenn ich in die R5 Designerhilfe schaue, sehe ich das hier:
Call notesUIDocument.Close
Hat es damit was spezielles auf sich?
Matthias
-
Da hat man wohl vergessen, die R5 DesignerHelp anzupassen:
Call notesUIDocument.Close( [ immediate ] )
Parameters
immediate
Boolean. Optional. If True, the document is immediately closed. If False, closing the document may be delayed. The default is False.
Hinweis This parameter is new with Release 5.0.7.
Das steht jedenfalls in der R6 DesignerHelp ...
Bernhard
-
True ist ein Option die ab irgendeiner hohen 5.0.x Version funzt. Damit machst du ein UIDOc das du über Script geöffnet hast SOFORT wieder zu. Eigentlich ist das zwar erst ab V6 vorhanden funkioniert aber schon da:
Auszug aus der V6 Hilfe:
Call notesUIDocument.Close( [ immediate ] )
Parameters
immediate
Boolean. Optional. If True, the document is immediately closed. The default is False.
Im Gegensatz zum normalen Close ist es damit möglich auf mal mehrere dokumente hintereinander zu verwurschten, ohne einen Speicherüberlauf wegen zuvieler geöffneter Dokumente zu produzieren.
Thomas
-
Danke Thomas und Bernhard, hört sich interessant an.
Muss ich mir unbedingt merken, da ich auch öfter mal mit Frontend- und Backend - Docs hantiere in einem Script, da könnte das u.U. hilfreich sein - zumindest werde ich es da mal testen. Wobei das "Undokumentiertsein" immer Nebenwirkungen haben kann.
-
das ist, glaube ich, der absurdeste Parameter, der mir je über den Weg gelaufen ist.
Ich befehle dem Objekt: "Schließe dich!".
Und dann muss ich ihm sagen, dass es das, was ich ihm befohlen habe auch noch sofort ausführen muss. Einfach absurd eben. Wer denkt sich sowas denn aus?!
-
Nee nee du musst ihm sagen schließe dich und schmeiß deine Speicherinstanz sofort in den Müll.
Natürlich ist der Parameter absurd aber offensichtlich hat da jemand beim Programmieren Mist gebaut und auf die Art haben Sie es wieder ausgebügelt.
Thomas
-
Natürlich ist der Parameter absurd aber offensichtlich hat da jemand beim Programmieren Mist gebaut und auf die Art haben Sie es wieder ausgebügelt.
Und ich glaube, diesen Mist schon öfter mal erlebt zu haben.
Werde ich demnächst mal beobachten, ob das True mich da dann weiterbringt.
-
Nur so zur Anmerkung:
Offensichtlich hat der Programmierer der "uidoc.Close" - Methode sich auf die Implementierung des @Command( [FileCloseWindow] ) gestürzt, denn das reagiert exakt gleich:
Erst wenn aller sonstiger Code durchgeführt ist, wird das Fenster wirklich geschlossen....
Und dann hat ein anderer Programmierer das über den Immediate = True versucht auszubügeln.
Ich schreibe bewusst "versucht", weil ich schon MEHRFACH den Fall (in verschiedensten Kombinationen) hatte, dass trotz immediate=True das Fenster sich erst dann schloss, nachdem der komplette Code abgearbeitet war...
Ich konnte keine Regelmässigkeiten (Version, Ort des Scripts, etc) feststellen und bin da schon öfters dran verzweifelt...
Wollte ich nur mal engemerkt haben...
Gruß
Tode