Autor Thema: Hilfe - einfache Formel funzt nur einmal / Fehlfunktionen  (Gelesen 2790 mal)

Offline jww

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
Hallo,

ich habe folgende (einfache) Aufgabe zu lösen:

Ein Framset mit z.B. 7 Frames soll mit verschiedenen Elementen dynamisch gefüllt werden. Um dies an die Benutzerbedürfnisse anpassen zu können soll es Parametergesteuert geschehen (je User aus dem Profil gelesen).

Der Parameter-Satz besteht aus einer Liste von 7 Elementen. Jedes Element beinhaltet:

Frame | Element-Typ | Element-Name/Parameter

Der Frame gibt an, wohin ein Inhalt gehen soll.

Der Element-Typ definiert, welcher Aufruf stattfindet: eine View, eine Page oder Ein Notes Dokument.

Der Element-Name bzw. Parameter gibt an, wie das anzuzeigende Element heisst - ein Name einer Page, einer Ansicht oder die Adresse eines Notes-Dokuments.

Ein Parametersatz sieht etwa so aus:

Right1|URLOpen|Notes:///C1257424005D891F/7E24381223390D92C1256DCF00579CDE/F44276FD21011909C12569F800368186
Mid2|URLOpen|Notes:///C1257424005D891F/0CD6F04BE7C45910C1256932005266A8/304EB58BF41B5436C12574240062EC36
Left2|OpenPage|MainPage
Left1|OpenPage|DBTitlePage
Mid1|OpenView|SPECS#View
BodyRight|OpenView|ADRCHK#View
Left3|OpenView|ADR#View


Der Code dazu so:


_content := @GetProfileField("profile01";"StartFrameSettings");
_debug := @GetProfileField("profile01";"StartFrameDebug") = "Y";

_loops := @Elements(_content);
_iteration := 1;

@While( _loops >= _iteration;

      _i_parameter := @Subset( @Subset( _content; _iteration) ;-1);
      _i_frame := @Word( _i_parameter ; "|" ; 1);
      _i_type := @UpperCase(@Word( _i_parameter ; "|" ; 2));
      _i_prm1 := @Word( _i_parameter ; "|" ; 3);
      _i_prm2 := @Word( _i_parameter ; "|" ; 4);

     @SetTargetFrame(_i_frame);
     @If( _debug ; @Prompt([Ok]; _i_frame ; @Implode( _i_type : _i_prm1  ;"...." )); "");


     @If( _i_type = "OPENPAGE" ; @Command([OpenPage]; _i_prm1); "" );
     @If( _i_type = "OPENVIEW" ; @Command([OpenView]; _i_prm1); "" );
     @If( _i_type = "URLOPEN" ; @URLOpen(_i_prm1);"" );

_iteration := _iteration + 1)


Das ganze ist als Agent realisiert und wird entweder per Button aufgerufen oder beim Öffnen der DB im DB-Open Event.

Das seltsame ist:

1.) Beim ersten Durchlauf funktioniert alles prima. Egal ob als DB Script oder als Macro, der über das UI aufgerufen wird. Aber nur in der Reihenfolge wie oben mit dem Parameter (siehe 3).

2.) Beim zweiten Durchlauf werden die Dokumente und Pages in neuen Tabs geöffnet, statt im Frameset. Die Views landen aber wieder im Frameset.

3.) Ändert man die Reihenfolge im Parametersatz, so, dass die Dokumentaufrufe (@URLOPEN) nach dem Aufruf einer View kommen, wird das zweite Dokument auch schon beim ersten Durchlauf in einem neuen Tab geöffnet. Das erste Dokument landet noch richtig im Frame!

Es scheint da eine Reihenfolge zu geben, ab der ein Landen von Dokumenten in einen Frame nicht mehr geht.

Kann mir da jemand auf die Sprünge helfen? Ich versteh's nicht und hab auch keine Hinweise gefunden.

1000 Dank.

Jürgen
 




Notes ist klasse - und ab und an zum auf den Mond schiessen.

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Re: Hilfe - einfache Formel funzt nur einmal / Fehlfunktionen
« Antwort #1 am: 07.04.08 - 22:36:40 »
Hi,

interessanter Ansatz, aber hast du Dir schonmal die Framesets in der "Lesezeichen" bookmarks.nsf / bookmarks.ntf angesehen?
-> z.B. Rahmengruppe/Frameset "FRFrame_2Horzizontal"

Da werden die einzelnen Frame-Inhalte berechnet anhand des Profils geladen,
und jeder Frame holt sich sein definiertes Element. (Maske, Page, View, Frameset ect.)

Die Sache mit dem @SetTargetFrame sehe ich als etwas kritischer,
ich vermute dass der Fokus auf deinen Frameset verlohren geht und darum der @SetTargetframe kein Ziel mehr findet.

Nachteil an der Sache ist, dass Du die logik in etlichen Stellen integieren musst,
wobei Du auch hier "dynamisch" bleiben kannst und mehrere Module (Frame-Sets im grossen-Frameset)
per copy-paste im Desiner vervielfältigen kannst und nur den Namen und an einer Stelle eine Key ändern musst.

Gruss, Pete(r)
pete(r)

Offline jww

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
Re: Hilfe - einfache Formel funzt nur einmal / Fehlfunktionen
« Antwort #2 am: 07.04.08 - 22:46:49 »
Ja, ich habe das mit den Formeln in Frames schon gesehen und wende das auch an - w es geht. Die Sache ist die, dass diese Formeln (nach meiner erfahrung) nur beim ersten öffnen des Frameset ausgewertet werden und danach statisch sind.

Ich möchte aber das Aussehen der Anwendung über die Zeit der Benutzung gezielt manipulieren können. Daher würde ich gerne die @SetFrame Funkzion nutzen.

Ciao
Jürgen
Notes ist klasse - und ab und an zum auf den Mond schiessen.

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Re: Hilfe - einfache Formel funzt nur einmal / Fehlfunktionen
« Antwort #3 am: 07.04.08 - 23:00:03 »
Hi,

Ich habe es so gemacht, dass ich den denn "Übergeordneten"
Frame z.B. mit nur EINEM @SetTarget-Frame ändere
oder mit
Code
	
        Dim WS As New notesUIWorkspace
	Call WS.ReloadWindow
einen Refresh erzwinge.

Gruss, Pete(r)
pete(r)

Offline jww

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
Re: Hilfe - einfache Formel funzt nur einmal / Fehlfunktionen
« Antwort #4 am: 07.04.08 - 23:36:18 »
Dein Ansatz ist valide. Ich wende das auch bei "einfachen" DB's an, wo die Flexibilität nicht so umfangreich sein soll.

Er hat allerdings einen klaren Nachteil: Ich muss im Frame bereits festlegen, welchen Typ ich hineinladen will. Nur dessen Name kann dann noch variieren.

Daher kann ich mit dieser Methode nicht einmal ein Dokument und ein anderes mal eine Ansicht oder Page im selben Frame darstellen. Dazu muss ich ein neues, passendes Frameset laden. Und da kommt dann die Permutation ins Spiel.

Ich bräuchte also n x 8 Framesets (n= Anzahl Frames, 8 Mögliche Inhaltstypen) ... das ist schon ein Wort ...

Ciao
Jürgen
Notes ist klasse - und ab und an zum auf den Mond schiessen.

Offline jww

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
Re: Hilfe - einfache Formel funzt nur einmal / Fehlfunktionen
« Antwort #5 am: 08.04.08 - 00:46:35 »
Problem gelöst ...

Offenbar verlässt ein "OpenView" den Platz und es ist kein echter Fokus gesetzt. Dadurch weiss Notes bein nächsten Durchlauf scheinbar nicht, wo (in welchem Frameset) es steht.

Wird das Makro, das die Frames mit Inhalten "beschickt", von eunem Hotspot aus einem Frame gestartet, funktioniert es auch mehrfach nacheinander.

EINZIGER BUG: Die Dokumentaufrufe (also die dazu gehörenden Parameter) müssen VOR Views (können aber NACH Pages) abgearbeitet werden. Stehen diese nach einem Viewparameter, werden sie in einem neuen Tab geöffnet.

Mit diesem Notes-Bug kann ich leben ...
Notes ist klasse - und ab und an zum auf den Mond schiessen.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz