Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: FriFra am 27.04.08 - 17:29:46
-
Ich habe eine Anwendung, in welcher ich die SearchBar für die gerade in einem bestimmten Frame angezeigte view aktivieren möchte. Mein Problem ist, der Button liegt auf einer Page/Form in einem anderen Frame, so dass die View nicht den Focus hat.
Es ist auch keine Option, die entspr. Schaltfläche direkt als Aktion in die View zu packen, da innerhalb der Anwendung beliebige Views aus belibigen Datenbanken innerhalb des besagten Frames "landen" können.
Vielleicht hatte ja hatte ja jemand von euch schonmal ein ähnliches Problem... Ich wäre in dem Fall zu allen "Schandtaten" bereit. So habe ich auch schon versucht ein externes Programm zu basteln, welches den entspr. Focus setzt, da die einzelen Komponenten allerdings sehr stark verschachtelt sind, ist so etwas nicht ganz trivial, so dass ich lieber doch nochmal hier nachfrage.
Eine Ideallösung wäre für mich, wenn ich auch gleich noch einen Serchquery auf die gewählte View loslassen könnte... mit dem NotesUiView/NotesView sicher kein Problem, aber wenn der View nicht den Focus hat, kommt man da auch nicht über den NotesUiWorkspace dran...
-
Hallo,
versuch es mal damit:
@SetTargetFrame("Dein Frame");
@Command([OpenView];"Deine Ansicht");
@Command([ViewShowSearchBar];"1")
Da ja Dein Problem zu sein scheint, nicht zu wissen, welche Ansicht gerade geöffnet ist, könnte man mit der Notes.ini arbeiten.
Beim öffnen der Ansicht, einen eigenen Parameter mit dem Namen der geöffneten Ansicht setzen und dann oben in der Formel den Parameter abfragen.
Setzt natürlich voraus, dass die entsprechenden ECL-Rechte gesetzt sind.
Da Du ja nun den Namen der Ansicht hast, kannst Dui ja auch per Script deine Abfragen ausführen.
mfg
Kjeld
-
Halo,
leider funktioniert das so nicht. Das war auch mein erster Ansatz... Der Focus bleibt auf der Page/dem Form, wo die auslösende Aktion liegt.
-
Wenn du @updateFormulaContext mit verwendest sollte das was du haben willst funktionieren.
In !!HELP!! ist das bei den Aktionen so eingebaut.
@If(UserviewsActionsElements_1 >= 4;
@Do(
INT_VAR := @Word(UserViewsActions_1[4];"#";1) ;
@UpdateFormulaContext;
@Command([OpenView]; @ViewTitle);
@Eval(INT_VAR)
);
"")
Und wenn man da in der Useraction als Parameter @command([ViewShowSearchBar]) mitgibt dan macht er die Searchbar in der ausgewählten Ansicht auch auf.
-
Dass das so funktioniert, setzt voraus, dass der Fokus zwischendurch irgendwann mal auf der View ist... ist er aber nicht. Wenn ich z.B. mit compose ein neues Dokument erstelle, dann kann ich mit @UpdateFormulaContext den Kontext auf das neu geöffnete Dokument lenken - dieses befindet sich in dem Moment aber auch im Vordergrund, hat also den Focus. Ein in einem Frame geöffneter View, oder was auch immer, bekommt nie von selbst den Focus.
P.S.: Ich habs natürlich trotzdem getestet... es geht nicht.
-
Wenn du mit Frames arbeitest und das was Kjeld geschrieben hat mit den was wir in Help gemacht haben kombinierst, dann geht das hundertprozentig.
Und wenn dir das nicht langt dann schaust du mal bei Nathan Freeman vorbei und suchst nach Crossframe Madness und Revolution.
-
Ach ja. Die View hat übrigens den Focus zu diesem Zeitpunkt nicht. Denn wir arbeiten auch in HELP mit Frames und Forms innerhalb der Frames.
-
Es funktioniert 100% nicht... Ich öffne die View übrigens mit @URLOpen, da sie sich in einer anderen DB befindet. Wenn sich das alles innerhalb meiner DB abspielen würde, dann würde ich ohnehin die entspr. Events der Views selbst verwenden um die SearchBar einzublenden.
Der Aufruf von @Command([ViewShowSearchBar];"1") führt immer zu: "Cannot execute the specified command", weil einfach der Kontext nicht stimmt.
Ich hab mal ein Beispiel angehängt...