Ansichtsname auslesen in einem Frameset

    • Offizieller Beitrag

    in einer Rahmengruppe mit 2 Frames zeige ich im 1. Frame (Name:NavigatorFrame) eine Seite an und im 2. Frame (Name:AnsichtsFrame) eine Ansicht.


    Klicke ich auf einen Hotspot im NavigatorFrame möchte ich den Namen der Ansicht auslesen.


    Im Web könnte ich es mit einem Cookie und im Notes mit einem Notes.ini-Eintrag oder über ein feld in einem Profil-Dokument lösen.


    Meine Lösungsmöglichkeiten bedeuten aber, ich muss jede Ansicht anpassen.


    Gibt es eine Möglichkeit den Namen der Ansicht direkt auszulesen (@Formel oder LotusScript)?


    Danke und 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

  • ....eventuell könnte ein setTargetFrame mit angehängtem WS.CurrentView helfen....


    ...oder vielleicht die GetCurrent Methode....

    [size=x-small]
    Computer sind da um zu rechnen!
    Nicht um Ausreden wie: "Ich kann nicht durch Null teilen!", auf den Bildschirm zu schreiben.
    [/size]

    • Offizieller Beitrag

    Habs mit folgendem Code versucht:

    Code
    Dim ws As New NotesUIWorkspace
    Dim uiview As NotesUIView
    
    Call ws.SetTargetFrame( "AnsichtsFrame" )
    Set uiview = ws.CurrentView
    Msgbox uiview.View.Name

    Das Object uiview ist Nothing.


    GetCurrent finde ich nur beim NotesViewNavigator. Und ich benötige den NotesView.Name.


    Gruß
    Dirk

    • Offizieller Beitrag

    Wo würdest Du den den Code hinterlegen bei einem Gliederungseintrag? Irgendwie finde ich nicht die passende Stelle.


    Was passiert bei neuen Ordnern?


    Gruß
    Dirk

  • Meine Idee war, statt einem "Named Element" eine "Action" zu verwenden. Allerdings hatte ich nicht an die Ordner gedacht. Drag & Drop würde dann nicht mehr funktionieren. :(


    Was willst Du eigentlich genau mit dem Ansichtsnamen machen?


    Ciao
    Bernd

  • ...vielleicht kann die Mail-Datenbank ein paar Lösungsansätze bieten... hier werden ja in den verschiedensten Rahmengruppen referenzierte Aktionen durchgeführt....

    [size=x-small]
    Computer sind da um zu rechnen!
    Nicht um Ausreden wie: "Ich kann nicht durch Null teilen!", auf den Bildschirm zu schreiben.
    [/size]

    • Offizieller Beitrag

    bis jetzt habe ich mir das private Adressbuch angesehen. Dort wird im Postopen der Ansicht ein Wert in ein Profil-Dokument geschrieben.


    Also werde ich die Mail-DB mal untersuchen.


    Gruß
    Dirk

    • Offizieller Beitrag
    Zitat

    bhort schrieb:
    Was willst Du eigentlich genau mit dem Ansichtsnamen machen?


    Im lokalen Adreßbuch gibt es neben der Gliederung die Alphabetauswahl. Diese hätte ich gern universal, d.h. ich kopiere in eine DB das FrameSet, die dazugehörigen Seiten und passe die Gliederung an und dann soll es in der DB auch funktionieren.


    Im Adreßbuch wird einfach die Ansicht ins Profil geschrieben. Funktioniert nicht bei x Useren und private Profile möchte ich nicht verwenden.


    Also bleibt mir nur die Notes.ini oder eine DB-weite globale Variable oder ich lese den Ansichtsnamen dynamisch aus (wäre mein Favorit).


    In der Mail-Datenbank habe ich nichts dergleichen gefunden :(


    Gruß
    Dirk

  • Ich dachte erst, dass ich die Lösung gefunden hätte.
    In eine Page habe ich einen Button mit
    @Prompt([Ok];"ViewName";@ViewTitle)
    integriert. Dieser liefert mir dann auch wie erwartet, die aktuell in dem Frame geöffnete Ansicht.


    Aber mein Versuch, per Evaluate-Anweisung das in Script zu nutzen, scheiterte völlig. :(


    Die einzige Idee, die ich noch hätte, wäre in dem "AddressPicker" in den Buttons erst per Formelsprache den Wert von @ViewTitle in die NOTES.INI zu schreiben und dann einen Agenten zu starten, der das Dokument in der Ansicht markiert. Vielleicht geht auch ein @Command([OpenView]) statt des Agenten. Ich bin mir nur nicht sicher, ob der Anfangsbuchstabe als Key für @Command([OpenView]) ausreicht.


    Falls Du eine Lösung finden solltest, wäre ich interessiert. ;)

    • Offizieller Beitrag

    mit einem @Command([OpenView]) habe ich es schon in der Gliederung versucht. Dabei kommt immer die Meldung, dass dieser Befehl in diesem Context nicht verfügbar ist :cry: .


    Eine Idee hätte ich noch. Den ViewName nicht in die Notes.ini zu schreiben, sondern in ein verstecktes Feld in der Maske (AdressPicker) und das Script "FindItemInView" im Adresspicker anpassen.


    Mal sehen ob sich da etwas machen lässt.


    Gruß
    Dirk

    • Offizieller Beitrag

    habe es in der Gliederung mit

    Code
    @SetTargetFrame("Alph");
    @SetField("ViewName"; "2. Erstelldatum");
    @SetTargetFrame("AnsichtsFrame");
    "2. Erstelldatum"

    versucht, aber das Feld "ViewName" wird im "Alph"-Frame nicht geändert.


    Gruß
    Dirk

  • Also mit dem folgenden Befehl geht es in meiner Testdatenbank. Einfach auf der Page in einen Button.

    Code
    @Command([OpenView]; @ViewTitle; "B")


    Es flackert einmal ganz kurz und der Cursor steht auf dem ersten Dokument mit einem "B".


    Die Testdatenbank ist eine einfache Dokument-Bibliothek. Es funktioniert natürlich nur mit Ansichten, die in der ersten Spalte keine Kategorie haben. ;)


    Wenn Du willst, kann ich Dir gerne die Datenbank zippen.

    • Offizieller Beitrag

    mein Problem sind jetzt nur noch die Ansichten ohne Kategorie :D


    Wahrscheinlich werde ich dann doch im Postopen der Ansichten den ViewName in die Notes.ini schreiben. :(


    Danke und Gruß
    Dirk

    • Offizieller Beitrag

    jetzt habe ich versucht ein Feld in der Maske mit der eingebetteten Gliederung zu beschreiben. Funktioniert nicht.


    Danach habe ich versucht mit @SetEnvironment einen Eintrag in die Notes.ini zu schreiben. Dabei kommt die Meldung "Sie haben keine Berechtigung zur Änderung der Umgebungsvariable.". Packe ich den Code in deine Schaltfläche funktioniert @SetEnvironment.


    Folgenden Code habe ich in der "Quelle" eines Gliederungseintrages verwendet:

    Code
    @SetEnvironment( "Ansicht" ;  "nach Erstelldatum");
    "nach Erstelldatum"


    Kann es sein dass ein @SetField und ein @SetEnvironment in der Gliederung nicht funktioniert?


    Gruß
    Dirk

  • Irgendwie verstehe ich die letzten beiden Kommentare nicht.


    Zitat


    Diali schrieb:
    mein Problem sind jetzt nur noch die Ansichten ohne Kategorie :D


    Meine Lösung funktioniert nur mit Ansichten ohne Kategorie.


    An dem Outline/Gliederung muss gar nichts geändert werden. Es muss lediglich eine neue Page/Seite erstellt werden mit einer Reihe von Buttons.

    Zitat

    Button A: @Command([OpenView]; @ViewTitle; "A")
    Button B: @Command([OpenView]; @ViewTitle; "B")
    Button C: @Command([OpenView]; @ViewTitle; "C")
    ...


    Das ist alles. Es wird kein Script benötigt und auch kein Profile-Dokument bzw. kein Eintrag in die NOTES.INI.


    Ciao
    Bernd

    • Offizieller Beitrag

    Bei mir funktioniert es auch mit Kategorie.


    Habe jetzt gerade festgestellt, dass ich gar kein Problem mit / ohne Kategorie habe, es funktioniert in beiden Fällen.


    Aber schalte ich die Ansicht um, wird immer eine neue Instanz geöffnet und zwar mit der Ansicht, die ich beim Öffnen des Framesets angegeben hatte.


    Mit den Schaltflächen und @Command([OpenView]...) habe ich es versucht.


    Meine neue Idee war es die Outlines und die ABC-Auswahl in eine Maske mit einem Feld zu packen und in dem Feld immer den Namen der aktuellen Ansicht zu hinterlegen und zwar dann, wenn ich über die Gliederung die Ansicht wechsel. Aber in einem Outlineentry funktioniert ein @SetField und ein @SetEnvironment nicht.


    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