Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Legolas am 05.07.11 - 14:17:02
-
Hallo Forum,
ich suche eine Möglichkeit das onClick Event einer Checkbox via Lotus Script zu erhalten!
Bei der Auswahl eines Eintrages der Checkbox soll eine Berechnung mit Lotus Script durchgeführt werden.
Kann mit hier jemand einen Tipp geben?
Danke
Bernd
-
Verwende die Eigenschaft des Feldes "Felder bei Schlüsselwortänderung aktualisieren" und baue dann Deinen Code in das PostRecalc-Event ein.
Bernhard
-
Danke für die Prompte Antwort!
Nur, wird bei dieser umfangreichen Maske dieses Event je nach Eingabe des Useres mehrfach ausgelößt!
Der Script-Code soll jedoch für die Berechnung nur ausgeführt werden, wenn ein Haken in der Checkbox eingefügt bzw. gelöscht wird.
Dies aber jeweils nur einmalig! (Beim Einfügen bzw. löschen!)
-
Hallo,
Koennte man dieses dann nicht mit einer entsprechenden vorgeschalteten Abfrage erledigen?
Andreas
-
Das ist ja nun einfach - Initialwert im PostOpen merken, vergleichen und ggf. reagieren sowie merken, dass man bereits eine Änderung gemacht hat.
Bernhard
-
Hallo Ihr Zwei,
aktuell mache ich das über einen Refreshbutton!
Dies ist jedoch nicht gerade Userfreundlich, da ich zuerst in der Checkbox die Auswahl vornehmen muss und dann den Refreshbutton betätigen muss!
Für Bernhard:
Natürlich kann ich mir den Status des Feldes irgendwie zwischenspeichern und bei jeder Aktualisierung mir merken, wie der vorhergehende Zustand des Feldes ist. Aber... das wollte ich eben vermeiden, dass ich einen Wert für ein Feld quasi doppelt mitführen und verwalten muss nur um so ein Stück Script Code ausführen zu können!
Ich hatte gehofft, dass es evtl. in den Eigenschaften des Feldes eine mir nicht bekannte Möglich gäbe, das Problem zu lösen!
Scheint aber wohl nicht der Fall zu sein!
Danke für Euer Feedback
Bernd
-
Markiere in den Feldeigenschaften der Checkbox die Option "Run Exiting/OnChange events after value change". Diese Option findest du unten auf den dritten Tab (Propellerhut).
Dein Code packst du dann in das Exiting - Event.
Vielleicht kannst du damit was anfangen. Haken an der Geschichte ist allerdings, dass des Exiting - Event auch ausgeführt wird wenn du vom Checkbox-Feld zu einem anderen Feld springst.
Axel
-
Dafür braucht man dann allerdings genau den gleichen Code wie im PostRecalc-Event - 5 schreckliche lange Zeilen incl. zweier End Ifs. ;)
Bernhard
-
OK Bernhard,
hast mich überzeugt!
Ich füge ein weiteres Feld hinzu, in welchem ich den letzten Status der Checkbox noch mitspeichere um diesen dann im PostRecal Event zu vergleichen!
Gruß
Bernd
-
Doch kein Feld (oder wenn, dann eins berechnet zur Anzeige.
Du definierst eine (Masken-)globale Variable, setzt die mit dem aktuellen Wert im PostOpen und vergleichst dann im Postrecalc oder Exiting. Wurde der Wert gewechselt, setzt Du die Variable auf einen unmöglichen Wert und unterlässt von da ab weitere Prüfungen.
Bernhard
-
Ich muss aber bei jeder Änderung des Feldes die Neuberechnung (PostRecal) durchführen!
D.h.: Wenn einer der Häken vom User gesetzt wird und wenn er einen der Haken wieder rausnimmt!
Die Berechnung darf nicht nur einmalig pro Maskenaufruf stattfinden!
Insofern muss ich nach jeder Änderung die aktuellen Werte der Checkbock speichern um diese beim Nächsten Durchlauf im PostRecal wieder mit den aktuellsten Werten der Checkbock vergleichen!
Beispiel:
User Setzt Haken 1 und 3 in der Checkbox:
Was passiert:
- Bei Haken 1 --> Berechnung erfolgt
- Bei Hakten 2 --> Berechnung erfolgt
User entfernt Haken 2: --> Berechnung erfolgt
Ich hoffe das ist soweit verständlich! ;-)
-
Ja, und?
Bernhard
PS: Du solltest nicht so viele Ausrufezeichen vergeuden ;)
-
Dann sollte es doch eigentlich ausreichen, wenn Du den Wert der "globalen" Variablen nicht auf einen unmoeglichen Wert setzt, sondern auf den gerade aktuellen Wert der Checkbox.
Andreas
-
OK,
ich werde mit den Fragezeichen in Zukunft etwas sparsamer umgehen! ;-)
Zum Glück kosten die nix.
Und wegen der Variable kam es nun auch bei mir an!!! :-)
Hatte wohl zuviel Energie für die Fragezeichen verwendet!
Grüße
und eine schönen Tag noch
Bernd
-
:)
-
Markiere in den Feldeigenschaften der Checkbox die Option "Run Exiting/OnChange events after value change". Diese Option findest du unten auf den dritten Tab (Propellerhut).
Dein Code packst du dann in das Exiting - Event.
Vielleicht kannst du damit was anfangen. Haken an der Geschichte ist allerdings, dass des Exiting - Event auch ausgeführt wird wenn du vom Checkbox-Feld zu einem anderen Feld springst.
Axel
Auch wenn es scheinbar gelöst ist, muss ich diesen Post nochmal aufgreifen.
Warum im Exiting-Event wenn es doch extra eine Onchange-Event gibt. Damit fällt auch der Nachteil vom Ausführen wenn Feld verlassen weg.
-
Hallo Grishu,
der OnChange Event greift erst nach dem Verlassen des Feldes.
D.H.: Wenn der Focus das Feld verlässt.
Gruß
Bernd
-
Hallo Grishu,
der OnChange Event greift erst nach dem Verlassen des Feldes.
D.H.: Wenn der Focus das Feld verlässt.
Gruß
Bernd
Nein, das stimmt nicht, hab's gerade ausprobiert, der Code im OnChange-Event wird bei jeder Wertänderung ausgeführt, vorausgesetzt, die erwähnte Option "Exiting/OnChange nach jeder Wertänderung ausführen" ist aktiviert.
-
Hallo Marco,
das ist die Lösung!
Diese Einstellung auf dem 3-ten Reiter war mir nicht bekannt.
Ist ja auch schließloich dort gut versteckt.
Danke für den Tipp
Gruß
Bernd
-
Markiere in den Feldeigenschaften der Checkbox die Option "Run Exiting/OnChange events after value change". Diese Option findest du unten auf den dritten Tab (Propellerhut).
-
Sorry,
hab's einfach nicht realisiert. :-: