Scheinbar ein Problem mit dem UIDocument

  • Hallo,


    ich hab schon wieder ein Problem, bei dem ich nicht weiter komme....


    Eine DB öffnet beim Start ein Frameset, dass horizontal geteilt aus 2 Frames besteht: oben "navFrame", unten "viewFrame". Beide Frames haben als Content eine Form.
    Während im "navFrame" eine Form startet, die aus Hotspots besteht, die wiederum im "viewFrame" DBs öffnen, beinhaltet die Form im "viewFrame" berechnete Felder (Danke nochmal dafür), sowie einen Hotspot, der einen Agenten startet, der auf Wunsch das Dokument neu berechnet, damit die Felder einen aktuellen Stand haben. Weiters ist im "PostOpen" der Form definiert, dass er ebenfalls diesen Agenten startet. Hintergrund soll sein, dass beim Öffnen der DB der Anwender eine Art "Dashboard" präsentiert bekommt. Da ich noch nicht mittels NotesTimer gespielt habe, habe ich zunächst einmal den manuellen "Reload"-Hotspot drin ... NotesTimer kommt aber noch. Das soll jetzt aber nicht der Punkt sein.
    Beim Öffnen wird das "Dashboard" sauber gefüllt, ebenfalls beim Aktivieren des "Reload"-Hotspots. Das funktioniert soweit also.


    Da die Hotspots im "navFrame" eine DB im "viewFrame" öffnen, habe ich daher oben noch einen Hotpot, der im "viewFrame" das "Dashboard" öffnet, nennen wir ihn "Return". Als Content ist hier die "Dashboard"-Form angegeben, die in "vewFrame" öffnen soll. Hier taucht nun das Problem auf, dass der Agent, der im PostOpen gestartet wird, ein Problem mit dem uidoc.FieldSetText() hat: der Errorhandler sagt, er finde keine Felder deren Text er setzen könnte. Im Debugger sehe ich aber keinen Unterschied zwischen dem UIDocument, wenn ich die DB öffne und sich somit automatisch das "Dashboard" öffnet und dem UIDocument, wenn ich den den "Return"-Hotspot drücke. Sämtliche Properties um UIDocument sind beide Mal exakt die selben, ebenfalls die Properties des uidoc.Document.


    Wo liegt mein Denkfehler?
    Bzw.: wie bekomme ich es hin, dass der Anwender beim Öffnen der DB aktuelle Werte im Dashboard hat, dann über den "navFrame" verschiedene DBs öffnet und damit schafft und dann mittels "Return"-Hotspot wieder das Dashboard mit den dann aktuellen Werten präsentiert bekommt?



    THX in advance!

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Ok, ich hab es so weit eingrenzen können, dass ich weiß, ich habe einen Denkfehler drin ... das kann so gar nicht tun.


    Zur Verdeutlichung dessen, was ich versuchte zu beschreiben, hab ich mal ein Bild angehangen.
    So öffnet die Datenbank, die Werte im Dashboard ("viewFrame") werden per Agentenaufruf im Postopen-Event geschrieben. In dem Agenten hole ich mir das Dokument über uiws.CurrentDocument. Der "Reload"-Button funktioniert somit einwandfrei.


    Die DB-Links oben öffnen Datenbanken unten im "viewFrame", auch das tut einwandfrei.
    Nur der "Return"-Button funktioniert nicht und zwar aus dem Grund, dass uiws.CurrentDocument das Dokument oben im "navFrame" zurück gibt. Auch wenn in den Hotspot-Properties eingestellt ist, dass er die Form "Dashboard" im "viewFrame" öffnen soll, wird das UIDocument im "navFrame" zurückgegeben. Somit muss die Aktualisierung des Dashboards scheitern. Das war mein Denkfehler, damit hatte ich nicht gerechnet.


    Zwischenzeitlich habe ich versucht im "Return"-Hotspot mittels @Command([ReloadWindow]) das gesamte Frameset neu zu laden in der Hoffnung, dass dann das "onLoad"-Event der "Dashboard"-Form seinen Teil tut. Tja, was auch imemr zuletzt stirbt, die Hoffnung jedenfalls war früher dran...


    Die spannende Frage ist also, wie komme ich vom UIDocument des "navFrame" auf der UIDocument des "viewFrame", damit ich das UIDocument darin mittels Agent neu befüllen kann?

    Dateien

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Probiers mal mit ws.SetTargetFrame, und dann einfach per ws.EditDocument( ... ) das Dashboard- Dokument da anzeigen. Entweder du generierst da jedesmal ein neues, oder du "recycelst" eins.
    Normalerweise müsste das dann das onLoad- Event des Dashboard- Dokuments gefeuert werden. Wenn nicht:


    wenn Du Set uidoc = ws.EditDocument( ... , True ) aufrufst, dann hast Du auf jeden Fall ein Handle aufs richtige UI- Dokument und kannst dann von dort aus wieder weitermachen.

  • Jupp, damit hat es funktioniert. Musste zuerst noch das UIDb-Objekt schließen, da er mir immer einen neuen Tab geöffnet hat.


    Finde ich rein optisch nicht schön ... irgendwie von hinten durch die Brust ins Auge ... aber es tut.


    Dank dir für den Tipp!

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl