Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Ralph_ am 20.02.17 - 09:29:30

Titel: Dialogbox mit eigenen Buttons läßt sich nicht schließen.
Beitrag von: Ralph_ am 20.02.17 - 09:29:30
Hallo.

In einer Ansicht habe ich eine Aktion, die eine Dialogbox aufruft.

Zitat
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.

Zitat
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
Titel: Re: Dialogbox mit eigenen Buttons läßt sich nicht schließen.
Beitrag von: Tode am 20.02.17 - 09:55:56
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.
Titel: Re: Dialogbox mit eigenen Buttons läßt sich nicht schließen.
Beitrag von: Ralph_ am 20.02.17 - 10:21:40
Danke, jetzt funktionierts.

OK-Button:
Zitat
FIELD hf_Button:="OK";
@Command( [RefreshParentNote] );
@Success;
@PostedCommand([FileCloseWindow])

Abbrechen-Button:
Zitat
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
Titel: Re: Dialogbox mit eigenen Buttons läßt sich nicht schließen.
Beitrag von: Bastel123 am 20.02.17 - 11:03:30
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
Titel: Re: Dialogbox mit eigenen Buttons läßt sich nicht schließen.
Beitrag von: tabama am 12.03.17 - 21:52:33
Hallo Bastel123,

funktioniert das mit dem "DialogBoxCanceled" auch bei eigenen Buttons (Typ "Normal") wirklich?

Bei mir leider nicht (oder mache ich was falsch?).
Titel: Re: Dialogbox mit eigenen Buttons läßt sich nicht schließen.
Beitrag von: Bastel123 am 13.03.17 - 16:23:11
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
Titel: Re: Dialogbox mit eigenen Buttons läßt sich nicht schließen.
Beitrag von: koehlerbv am 13.03.17 - 18:52:28
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
Titel: Re: Dialogbox mit eigenen Buttons läßt sich nicht schließen.
Beitrag von: tabama am 14.03.17 - 08:35:21
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