Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: udo187 am 07.12.11 - 12:16:59
-
Hallo !
Ich hatte folgendes Problem mit einer eingebetteten Ansicht und der Preview - vielleicht kann jemand diesen Lösungsweg brauchen:
Eine Rahmengruppe, links der NotesNavigator, rechts eine Rahmengruppe mit 2 Rahmen, der obere (NotesView) für die Ansichten und der untere für die Vorschau (NotesPreview).
Wenn nun Links im NotesNavigator ein Gliederungseintrag (Ansicht) ausgewählt wird, sehe ich rechts die Dokumente und rechts unten die Vorschau.
Soweit so gut, doch ich habe auch eine Seite mit einer eingebetteten kategorisierten Ansicht - einzelne Kategorie anzeigen mit @Username - in die Gliederung eingebunden.
Die NotesPreview zeigte beim Öffnen dieser Seite leider nicht die Vorschau auf das erste Dokument der Ansicht. Leider auch nicht eine leere Preview, sondern das in der zuvor geöffneten Ansicht gewählte Dokument.
Erst beim Selektieren eines Dokumentes in der eingebetteten Ansicht der Seite zeigte die richtige Vorschau.
Und dies führte bei Usern zu Verwirrung da er "oben" seine eigenen richtigen Dokumente sieht und in der Preview ein anderes.
Einen eigenen Rahmen ohne Preview wollte ich nicht, sondern es sollte in der Preview das erste Dokument der eingebetteten Ansicht angezeigt werden.
Natürlich habe ich dieses Forum durchforstet, habe aber keine Lösung gefunden bzw. bin auf diverse Probleme mit eingebetteten Ansichten und Fokus, selektieren von Dokumenten, etc. gestossen.
Bei der folgenden Lösung wird in der eingebetteten Ansicht kein Dokument selektiert, sondern es wird zuvor das Dokument, welches in der
Preview angezeigt werden sollte, per Agent "gesucht" und dann in der gewünschten Ansicht per Call uiview.SelectDocument(doc) selektiert.
Somit wird es in der Preview korrekt angezeigt !
In der Seite mit der eingebetteten Ansicht muss im Queryopen folgender Code hinterlegt werden:
@Command([ViewChange]; "$FullNameUser");
@Command([ToolsRunMacro];"SetFocus")
wobei die Ansicht "$FullNameUser" die Ansicht mit den Dokumenten ist die dann in der Preview angezeigt werden sollten, erste Spalte mit Fullname aufsteigend sortiert, und der Agent macht folgendes:
Sub Initialize
Dim ses As New NotesSession
Dim wes As New NotesUIWorkspace
Dim db As NotesDatabase
Dim col As NotesDocumentCollection
Dim doc As NotesDocument
Dim uiview As NotesUIView
Dim view As NotesView
Set db = ses.currentdatabase
Set view = db.GetView("$FullNameUser")
Set col = view.GetAllDocumentsByKey(ses.username)
Set doc = col.GetFirstDocument
Set uiview = wes.CurrentView
If Not (doc Is Nothing) Then
Call uiview.SelectDocument(doc)
End If
End Sub
Getestet unter Notes Version > 8.0 - funktioniert wie gewünscht.
Für Feedback & Anregungen - ein "alter Hase" sieht mehr als ein "Frischling" - bin ich natürlich dankbar !
LG
Udo
-
... für mich sind das 2 Stellen, an denen ich ansetzen würde:
1. Im PostOpen der Maske mit der eingebetteten Ansicht
2. In den Events der EmbeddedView TargetFrame(Single click), ...(double click)
Ohne es bisher so gemacht zu haben - aber so wäre mein Ansatz um das sauber zu halten.
Toni
-
Hallo Toni !
Danke für deine Antwort.
Wenn ich in der eingebetteten Ansicht ein Dokument (manuell) auswähle, so funktioniert die Voransicht ohne Probleme. Das Problem ist der Wechsel zwischen einer normalen Ansicht (wo irgendein Dokument markiert ist und somit in der Vorschau angezeigt wird) und der Seite mit der eingebetteten Ansicht. In der eingebetteten kategorisierten Ansicht ist direkt nach dem Wechsel kein Dokument selektiert, der User sieht aber nur seine eigenen (einzelne Kategorie anzeigen @Username), in der Vorschau sieht er aber ein anderes, eben das was zuvor in der anderen Ansicht selektiert war. Und dies führt zu Verwirrung.
Daher dieser Trick mit "uiview.SelectDocument(doc)" mit zuvor mittels Agent ermittelten doc. Somit wird in der Vorschau auch das richtige Dokument (in meinem Fall immer nur 1 Hauptdokument pro User) angezeigt dass auch oben in der eingebetteten Ansicht (1 Hauptdokument und mehrere Antworten) zur Auswahl stehen.
Das Problem ist irgendwie schwer zu beschreiben wenn man(n) es nicht selbst hat, ich kann am Montag einen Screenshot anhängen.
LG
Udo
-
... beim Öffnen des Dokumentes mit der eingebetten Ansicht ist kein Dokument per Default selektiert, daher müsstest du beim Öffnen im PostOpen des Dokumentes ermitteln, welches Dokument das erste in der Kategorie ist und dies dann dem Preview-Frame unterschieben ...
-
ja genau das ist das Problem.
Und ich löse dies auf oben beschriebene Weise.
Ob dieser Weg so "gut" ist kann ich nicht sagen.
Wie würdest du das machen ?
LG
Udo
-
... deine Lösung ist so weit gut - das Problem mit Version 8.x ist, daß es Sachen gibt, die noch nie funktioniert haben, aber andererseits auch Sachen die bisher immer funktionierten jetzt nicht mehr gehen. Ich habe mitlerweile schon Versionsverzweigungen im Code - und darüber bin ich alles andere als glücklich. Wer weiß, was mit der nächsten Version wieder anders abgefangen werden muß...
-
Was die Zukunft bzw. die nächste Version bringt werden wir alle früher oder später feststellen (müssen). Die Gefahr bei solcher kleinen "Stunts" ist mir bewußt, ich habe aber keine andere Lösung gefunden. Am einfachsten wäre es - meiner Meinung nach - wenn der Fokus in der eingebetteten View gesetzt werden kann - dann stimmt auch die Preview.
Einige Beiträge hier in diesem wunderbaren Forum haben sich zu diesem Thema mit "sendkey" beschäftigt (wobei sendkey im Notes selbst lt. Hilfe ja nicht funktioniert ?)
- aber alle mit keiner wirklichen Lösung.
Danke Toni für dein Feedback & schönen Abend noch !
LG
Udo
-
... den wünsche ich dir auch. Was funktioniert, ist zunächst nicht schlechter als das bisherige ;)
Am einfachsten wäre gewesen, wenn es weiter wie bisher funktionieren würde. Ich hatte heute wieder das Erlebnis, daß bisherige Toleranzen und Limits jetzt empfindlicher sind - da müssen wir wohl oder übel durch...