Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: mibo11 am 07.07.05 - 15:53:48
-
Vielleicht hat jemand eine Idee und bringt mich auf andere Gedanken.
Innerhalb einer Dialogbox brauche ich nun einen Button, der das aktuelle Feld ausliest. UIDoc.Currentfield fällt mir da so als Lösung ein, jedoch wird der Focus durch den Klick auf den Button verschwinden und so keinen Feldnamen zurückliefern. Eine Aktionsschaltfläche würde den Focus nicht verändern, fällt jedoch innerhalb einer Dialogbox aus.
Gibt es noch andere Möglichkeiten?
Gruß Sascha
-
Ein kleines Script in den Entering-Event jedes Feldes der Dialogmaske, das den aktuellen Feldnamen "irgendwo" (ini, spezielles Feld, globale Variable, ...) hinschreibt? Das kannst Du dann im Buttonsourcecode auslesen.
Andreas
-
Wenn der Button auch in Script geschrieben ist, würde ich eine globale Variable (d.h. unter Declaration in Globals der Maske definiert) verwenden.
Wie Sascha geschrieben hat, den Wert im Entering setzen und auch im Exiting wieder zurücksetzen.
Andreas
-
Andreas, bist Du sicher, dass das Exiting nicht feuert, wenn man einen Buhtong betätigt? Nach Windows-Modell müsste das bei Focusverlust feuern (das ist aber nicht überall tatsächlich der Fall). Insofern wäre ich mit dem Exiting-Event hier vorsichtig und würde statt das Löschen des Entering-Flags ein zweites Exiting-Flag verwenden
-
Meiner Erfahrung nach wird das Exiting Event nicht ausgelöst, wenn man einen Button anklickt. Aber das wäre noch mal zu testen.
Ich hatte es eigentlich nur erwähnt, damit das ganze etwas sauberer ist. Sonst hüpft der Cursor von einem Feld ins andere und das andere hat kein Entering. Dann "denkt" der Button, der Cursor steht noch im ersten Feld.
Andreas
-
Die Ueberlegung ist sicher sehr wichtig, das Problemfeld lässt sich aber wohl nicht ganz absichern. Mit einem separaten Exiting-Flag ist das dann bei Bedarf ebenfalls überprüfbar, wenn auch ähnlich unzuverlässig, wie wenn nur ein Entering-Flag gesetzt ist.
-
Hallo zusammen,
vielen Dank für die Anregungen. Ich habe es jetzt tatsächlich mit dem Entering in Verbindung mit einer globalen Variable gelöst.
Globals:
Dim feldname as string
dim uidoc as notesuidocument
Postopen:
set uidoc = Source
Entering:
feldname = uidoc.currentfield
Da die Maske 150 Felder hat und ich tendenziell eher faul bin und nicht in 150 Feldern das Entering verändern wollte, habe ich ggf. nach einem anderen Trick gesucht. Schade, dass der Focus durch den Klick auf den Button verloren geht, was zwar logisch ist, aber auch irgendwie unsinnig, da der geänderte Focus (des Buttons) nicht ausgewertet werden kann.
Gruß und Dank Sascha
-
Anstelle des Buttons könntest Du eine Aktion verwenden, da geht der Focus nicht verloren soweit ich weiss.
Andreas
-
Sascha, das Verlieren des Focus hat nix mit Notes zu tun, so ist die Windows-Definition ....
-
Anstelle des Buttons könntest Du eine Aktion verwenden, da geht der Focus nicht verloren soweit ich weiss.
Andreas
Leider nein, da das Ganze innerhalb einer Dialogbox statfindet!
Sascha, das Verlieren des Focus hat nix mit Notes zu tun, so ist die Windows-Definition ....
Hab' mich etwas unglücklich ausgedrückt. Es wäre schon, wenn die Funktion CurrentField bei Klick auf den Button ähnlich wie die Aktionsschaltfläche (z.B. wie es ja jetzt progammiert ist), den Wert in den globalen Speicher packt, dann könnte man sich das selber programmieren sparen, zumal das CurrentField in Verbindung mit einem Button keine Auswirkung hat, also keine Fehler entstehen können.
Gruß Sascha
-
Eine Diabox mit 150 Feldern? Viel vergnügen .... das tönt nach möglichem Chaos ....
-
Gott sei Dank kann man die Objekte über den Objektbrowser ansteuern und muss nicht jedes einzelne Feld ansteuern.
Weiß du eigentlich ob die Teamstudio Tools Massenänderungen in dieser Form durchführen können?
Also Script in 150 Felder per Knopfdruck pushen und ggf. noch eine Laufvariable dabei erweitern, wie z.B.
uidoc.fieldsettext "Feld_" & Cstr(zaehler),wert
Gruß Sascha
-
M.E. lässt sich bei Aufruf per Script der Teamstudio Configurator nicht mehr beim Search&Replace abbrechen, um on the fly szReplaceText zu verändern.
Ich würde mich da natürlich gerne eines besseren belehren lassen. Glombi ?
Bernhard