Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: SaSaWu am 06.11.12 - 16:43:27
-
Ich möchte eine Schaltfläche in Abhängigkeit zweier Feldwerte A und B ein-/ausblenden.
Feld B ist ‚bearbeitbar‘ und ein Optionsfeld. Hier kann ich „Felder bei Schlüsselwortänderung aktualisieren“ aktivieren.
Feld A ist ebenfalls ‚bearbeitbar‘, aber ein Datumsfeld. Hier kann ich „Felder bei Schlüsselwortänderung aktualisieren“ nicht aktivieren.
Die Maske habe ich auf ‚Felder automatisch aktualisieren‘ gesetzt.
Die Abhängigkeit zu Feld B funktioniert, zu Feld A leider nicht bzw. nur bei ‚F9‘-Aktion.
Wie kann ich das lösen?
-
- OnChange-Event
- Exiting-Event
- Timer (letzte Wahl!) zum Triggern von PostRecalc
- Maske bei Feldänderung aktualisieren (Achtung - Performance! Das musst Du situativ einschätzen und später mögliche Erweiterungen berücksichtigen).
- ... Da geht noch mehr, wird aber sehr viel komplexer ...
Bernhard
-
Danke, Bernhard!
Habe folgenden Script...
Sub Exiting(Source As Field)
Dim uiws As New NotesUIWorkspace
Call uiws.ViewRefresh
End Sub
...im Exiting-Event versucht bei zusätzlicher Option "Exiting/OnChange-Event bei jeder Änderung ausführen" im Datenfeld. Hat aber nicht die gewünschte Wirkung. Habe mir das aus anderen Forumsbeiträgen geholt, besitze jedoch keine Script-Kenntnisse!
-
"Ohne Script geht nix" ist hier zwar falsch (wenn Du alle Punkte meiner Antwort betrachtest), aber es wird zumindest schwer. Warum sollten wir jetzt was in LS aufmalen, was Du dann (immer noch) nicht verstehst? Das geht nicht gegen Dich, wirklich nicht (wenn Du denn damit leben kannst), aber gegen Deinen Arbeitgeber. Wir arbeiten nicht unbezahlt für ihn.
Bernhard
PS: Nochmals - lies alle Punkte auf, die ich aufgemalt habe.
-
Viewrefresh ist die falsche Methode der falschen Klasse. In der NotesUiDocument- Klasse wirst Du fündig...
-
ViewRefresh ist schon in der richtigen Klasse angesiedelt und tut häufig (aber nicht immer - es kommt auf den Kontext an!) das, was man mit F9 mit den Wurstfingern macht, Torsten ;)
Hier braucht es aber wohl wirklich die NotesUIDocument class, aber das nun einem LS-Nichtkenner verklickern ...
Bernhard
-
Folgendes sollte es tun denke ich. Ist keine Atomwissenschaft.
Sub Exiting(Source As Field)
Dim uiws As New NotesUIWorkspace
dim uidoc as NotesUIDocument
set uidoc =uiws.CurrentDocument
Call uidoc.Refresh
End Sub
Achtung: NICHT ViewRefresh
Wenn es aber "nur" darum geht, die Verbergenformeln neu zu berechnen, dann reicht anstelle von
Call uidoc.Refresh
ein
Call uidoc.RefreshHideFormulas
Andreas
-
Aber bei dem Exiting-Event ist zu beachten, dass er nur ausgeführt wird wenn das Feld auch wirklich verlassen wird.
Es sein denn man hat in den Feldeigenschaften den OS-Style und die Option "Run Exiting/Onchange events after value change" gesetzt.
Axel
-
Das hat er wenn ich das richtig gelesen habe.
Andreas
-
@Bernhard
Deine Anmerkung zu LS kann ich voll nachvollziehen, insbesondere „wir arbeiten nicht unbezahlt für Deinen Arbeitgeber“.
Aber zum Thema „..lies alle Punkte“: Ich habe die Maske auf „Felder automatisch aktualisieren“ gesetzt (siehe Posting 1), Du schreibst „Maske bei Feldänderung aktualisieren“. Ich dachte schon wir reden von verschiedenen Einträgen.
Tatsächlich ist es aber ganz einfach: Ich hatte das Datumsfeld beim Testen nicht verlassen und so wurden die Berechnungen (noch) nicht angestoßen ;-(
So reicht es mir im Prinzip schon aus.
@Glombi & Axel
Habe das Script mit den entsprechenden Feldeigenschaften ausprobiert: es wird auch nur nach Verlassen umgesetzt. Außerdem möchte ich gerne das Kalender-Steuerelement beibehalten.
@Alle
Vielen Dank!