Link-Hotspot in Richtextfeld einfügen

  • Hallo Leute,


    ich würde gerne per Button in einem Dokument (LotusScript oder Formelsprache) einen Link-Hotspot in ein vorhandenes Richtextfeld einfügen. Der Link-Hotspot soll eine Datei repräsentieren und diese Datei kann vom Benutzer durch einen OpenFileDialog ausgewählt werden.


    Soweit bin ich schon:


    Sub Click(Source As Button)
    Set ws = New NotesUIWorkspace
    Set uidoc = ws.CurrentDocument
    Set doc = uidoc.document
    Set se = New NotesSession
    Set rtitem = doc.items(4)

    filenames = ws.OpenFileDialog( True, "Datei auswählen")
    Call doc.items(4).AddNewLine(1)
    Call doc.items(4).AppendText("file:\\\"+filenames(0))
    Call doc.Save(False, True)
    End Sub


    Problem ist nun, dass dieses Feld im Prinzip danach immernoch leer ist. Auch wenn ich Speichere und neu öffne.


    Kann sich das jemand erklären?


    Am Besten wäre es natürlich wenn mir jemand eine Möglichkeit aufzeigt wie ich einen "echten" Link-Hotspot in das RichtextFeld einbinden kann.


    Danke für etwaige Antworten =).

    • Offizieller Beitrag

    Du musst UI und Backend sauber abgleichen.


    Prinzip:
    - uidoc speichern (egal on neu oder ein vorhandenes Dokument
    - uidoc.Close
    - RT-Feld im Backend-Dokument beschreiben
    - ui-Dokument wieder öffnen
    - Backend Dokument, wenn es neu war löschen
    dann steht auch der Link drin.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Zusätzlich dazu ist es ziemlich ungünstig über einen festen Indexwert auf das Item zuzugreife, da du nie sicher sein kannst, daß das Item tatsächlich immer an der entsprechenden Stelle steht.
    Besser solltest du es dir per Namen holen und vor allem auch prüfen ob es überhaupt ein RTItem ist

    • Offizieller Beitrag

    taurec, Du bist im Forum? - ich dencke Du bist in Gelsenkirchen auf dem EC 09.


    Gruß
    Dirk

  • Aha. Ok.


    Also sowas in die Richtung ->


    Sub Click(Source As Button)
    Set ws = New NotesUIWorkspace
    Set uidoc = ws.CurrentDocument
    Set doc = uidoc.document
    Set se = New NotesSession
    Set rtitem = doc.GetFirstItem("Files")

    Call uidoc.Save()
    Call uidoc.Close()

    filenames = ws.OpenFileDialog( True, "Datei auswählen")
    Call rtitem.AddNewLine(1)
    Call rtitem.AppendText("file:\\\"+filenames(0))
    Call doc.Save(False, True)

    If doc.IsNewNote = True Then
    doc.Remove(False)
    End If
    End Sub


    Link steht leider immernoch nicht drin.
    Sorry bin in der Notes Logik noch nicht so ganz durchgestiegen. Komm eigentlich aus der .NET Ecke.

    • Offizieller Beitrag

    Wo öffnest Du das uidoc wieder? Das uidoc muss wieder aus dem Backend-Dokument geholen werden.


    Das uidoc öffnen muss vor dem doc.Remove geschehen. Das doc.Remove würde ich jetzt zum Testen auch noch weg lassen.


    Schau Dir mal NotesUIWorkSpace.EditDocument an. (Beispiel in der Notes-Designer-Hilfe)


    Gruß
    Dirk

  • Das funktioniert beim besten willen nicht.
    Bis zu dem Punkt an dem ich
    Call ws.EditDocument(True,uidoc.document,,,, False)
    ausführe steht im UIDoc noch alles richtig drin. Nach dem Call ist alles wieder verschwunden. Das kann doch nicht so schwer sein.


    Sub Click(Source As Button)

    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    Dim parentDoc As NotesDocument
    Set uidoc = ws.CurrentDocument
    Set doc = uidoc.Document


    Call uidoc.Save()
    Call uidoc.Close()

    Set rtitem = doc.GetFirstItem("Files")
    filenames = ws.OpenFileDialog( True, "Datei auswählen")
    Call rtitem.AddNewLine(1)
    Call rtitem.AppendText("file:\\\"+filenames(0))
    Set doc.Files = rtitem

    Call ws.EditDocument(True,uidoc.document,,,, False)

    End Sub


    An was liegt das denn? Kann vieleicht jemand meinen Code ergänzen und kurz erläutern?

  • Du veränderst doc und dann öffnest du wieder uidoc.document, das es zu diesem Zeitpunkt gar nicht mehr gibt, da du es davor ja schon geschlossen hast.


    Bei Scripten solltest du konsequent deine Objekte und Variablen verwenden und nicht mal die eine, mal die andere.

  • Hi!
    Kann man das auch, anstelle auf eine Datei auf einen Ordner verlinken?

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

    • Offizieller Beitrag

    geht auch.


    erstelle einen Link im Format
    file:///Laufwerk:/Pfad
    z.B.: file:///c:/temp/


    Gruß
    Dirk

  • Kann man das auch über den
    ws.OpenFileDialog
    machen?

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

    • Offizieller Beitrag

    es geht über notesUIWorkspace.URLOpen.


    Wichtig ist, dass im BS die Behandlung von file:// richtig eingestellt ist.


    Gruß
    Dirk

  • Ich bin mir nicht sicher, ob wir gerade aneinander vorbei reden...
    Ich möchte einen vorgegebenen Ordner im Filesystem in einer Dialogbox öffnen. Darin sollen dann aber keine Files, sondern ein Unterordner ausgewählt werden.
    Diese Information soll dann gespeichert werden und für einen späteren Aufruf eben dieses (Unter-)Ordners genutzt werden....

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

    • Offizieller Beitrag

    ok - da habe ich was anderes aufgefasst.


    Aber auch dies geht mit
    notesUIWorkspace.OpenFileDialog
    notesUIWorkspace.SaveFileDialog


    Brauchst nur Ordner musst du SaveFileDialog verwenden, denn nur dart gibt es das Flag directoriesOnly.


    Gruß
    Dirk

  • Ok!


    Jetzt konnte ich das Verzeichnis auslesen und in einem Textfeld speichern.
    Wieder öffnen kann ich es mit ws.OpenFileDialog auch. Leider öffnet sich da nur so das Auswahlfenster und man könnte dann die Dateien irgendwo in ein RichText-Feld einfügen oder so.
    Kann man auch ein natives Windows-Explorer Fenster öffnen und dann dort Dateien öffnen (also z.B. ein Word-Dokument, das sich dann auch in Word öffnet)?

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

    • Offizieller Beitrag

    ja mit der Win-Api. Ob diese aber bei 32 Bit und 64 Bit und den einzelnen Versionen überall unverändert ist kann ich nicht sagen, habe da schon einige Überraschungen erlebt.

  • Hallo Dirk!
    Meinst Du, Du könntest mir das beim EC mal zeigen?!

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)