Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Ralph_ am 20.02.17 - 09:29:30
-
Hallo.
In einer Ansicht habe ich eine Aktion, die eine Dialogbox aufruft.
vRet = oUIWorkspace.DialogBox("(mToolboxUnterlagen)", True , True, True , False, True, False, "Toolbox", oTempDoc, True, True , True)
In der Dialogbox hab ich zwei eigene Buttons für OK (Typ OK) und Abbruch (Typ Abbrechen).
Zusätzlich habe ich ein Hilfsfeld, in der ein Wert reingeschrieben wird, jenachdem, welcher der beiden Buttons gedrückt wird. Das Hilffeld enthält dann den Wert "OK" oder "CANCEL".
In der Dialogbox selber können Werte in diverse Felder (numerisch, Text) eingetragen werden. Im QueryClose prüfe ich nun, ob die eingegebenen numerischen Werte innerhalb eines zulässigen Wertebereichs liegen. Wenn nicht, erscheint eine Msgbox-Fehlermeldung und die weitere Verarbeitung wird mit Continue=false abgebrochen.
Ansonsten ist alles ok und im aufrufenden Script geht's dann weiter.
vWert=Source.FieldGetText("hf_Button")
Continue=True
If ("OK"=vWert) Then
vWert=Source.FieldGetText("f_Gli_Wert")
If((vWert<1) Or (vWert>999)) Then
Msgbox "Der Wert muss zwischen 1 und 999 liegen (inklusive 1 und 999)."
Continue=False
End If
Das Problem: Wenn alle Werte richtig eingegeben wurden und keine Fehlermeldung erscheint, läuft alles so wie es soll (Dialogbox wird geschlossen und das aufrufende Script läuft weiter)
Liegt ein Eingabefehler vor kann man diesen zwar nach wegklicken der Msxbox korrigieren, aber mit Klick auf den eigenen "OK"-Button läßt sich die Dialogbox nun nicht mehr schließen. Das QueryClose wird nicht mehr aufgerufen.
In den Buttons selber wird nur das Hilfsfeld bestückt. Ich habe auch testweise ein RefreshParentNote() eingebaut, die Dialogbox läßt sich beim zweiten Versuch einfach nicht schließen.
Verwende ich die fest eingebauten OK/Cancel-Buttons, funktionierts.
Ich würde aber gerne die eigenen Buttons verwenden. Nur, warum läßt sich die Dialogbox nicht schließen?
Danke im Voraus,
Grüße
Ralph
-
Das ist ein -seit langer Zeit- bekannter Bug in der Art und Weise, wie die Buttons mit den Events zusammenspielen. Da Du die Prüfung, ob OK oder Abbrechen gedrückt wurde sowieso mit einem anderen Feld machst, ändere den Typ der Buttons von "Abbrechen" auf "Normal", dann klappt es auch mit den Events.
-
Danke, jetzt funktionierts.
OK-Button:
FIELD hf_Button:="OK";
@Command( [RefreshParentNote] );
@Success;
@PostedCommand([FileCloseWindow])
Abbrechen-Button:
FIELD hf_Button:="CANCEL";
@Command( [RefreshParentNote] )
@Success;
@PostedCommand([FileCloseWindow])
Ich hatte schon letzte Woche mit Script und @ und Button-Typ "OK"/"Normal" probiert, irgendwas fehlte da. Jetzt, wo das "@Success" mit drin ist klappts.
Und die Validierung im QueryClose wird bei OK auch immer aufgerufen.
So wie ich das gerne hätte.
Nochmals Danke,
Grüße und ne schöne Woche.
Ralph
-
Ich nutze für sowas im queryclose-Event der Dialogbox
die Property "DialogBoxCanceled"
der "notesUIDocument"-Class.
Die gibt einem den gedrückten Knopf zurück, danach kann man machen was man will.
Gruß
Sebastian
-
Hallo Bastel123,
funktioniert das mit dem "DialogBoxCanceled" auch bei eigenen Buttons (Typ "Normal") wirklich?
Bei mir leider nicht (oder mache ich was falsch?).
-
Aus der Hilfe:
Legal values:
- True indicates that the user exited the dialog by clicking Cancel or pressing ESC.
- False indicates that the user exited the dialog by clicking OK.
Daher vermute ich, dass nur die "Normal" Button nicht gehen.
Wenn Du aber nur zwei Schaltflächen hast, so nimm doch die orginalen.
Dann kannst Du alles an einer Stelle abfrühstücken und musst nicht an verschiedenen Stellen suchen.
Sebastian
-
Um Sebastians Beitrag zu bestätigen: NotesUIDocument.DialogBoxCanceled gilt nur für den Standard-Cancel-Buhtong. Wie sollte es auch anders gehen - in eigenprogrammierten Buttons kann ja sonstwas stehen und eine Codeauswertung für die NotesUIDocument-Property findet natürlich nicht statt.
Bernhard
-
Hallo zusammen,
vielen Dank.
Ich habe natürlich nicht nur die zwei Buttons, die anderen trage aber nichts zu meinem Problem bei.
Nun weiß ich aber dass ich es irgendwie anders lösen muss.
Entweder die Validierung in den Speichern-Butten mit rein, oder ein Flag setzten, dass ich dann im Queryclose auswerte.
Grüße
Martin