Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Silver am 18.11.05 - 08:37:05
-
Hallo!
Ich habe eine Maske, in der ein Layoutbereich Optionsschaltflächen enthält. Dieser Layoutbereich (bzw. diese Maske) wird aus einer anderen Maske mit @DialogBox aufgerufen.
Soweit so gut. Nun will ich noch eine Prüfung einfügen, die zur Auswahl einer Optionsschaltfläche zwingt, wenn auf OK geklickt und noch keine Selektion getroffen wurde. Hatte dies in`s Query-Close-Event geschrieben. Aber dann kommt die Meldung auch nach Klick auf "Abbrechen".
Wie muss ich das lösen? Hab leider überhaupt keine Idee.
-
Hallo,
passiert der Aufruf per Formel oder Script.
Bei Script kannst Du mit Hilfe des erforderlichen Dokuments das Feld prüfen und wenn nicht gewählt,
die Dialogbox erneut aufrufen. Solange bis abgebrochen wird oder das Feld korrekt gefüllt ist.
Macht sich am besten mit Sprungmarken
Dim s as New NotesSession
Dim ws as New NotesUIWorkspace
Dim db as NotesDatabase
dim helpdoc as NotesDocument
Dim dialogbox as Variant
Set db = s.CurrentDatabase
Set helpdoc = db.CreateDocument
dialog:
dialogbox = ws.Dialogbox(....,helpdoc,...)
If dialogbox Then
If helpdoc.prueffeld(0) = "" Then
msgbox "Bitte eine Auswahl treffen."
Goto dialog
End if
end if
.
Für Formel fällt mir dafür spontan keine Lösung ein.
mfg
Kjeld
-
Vieleicht könnte dir aber auch @PickList weiterhelfen?
-
Hi,
dafür gibt es in der Klasse NotesUIDocument die Eigenschaft DialogBoxCanceled. Damit kannst du prüfen, ob die Dialogbox mit OK oder Abbrechen geschlossen wurde.
Beisp.:
Sub Queryclose(Source As NotesUIDocument, Continue As Variant)
If Source.DialogBoxCanceled Then
'Dialog wurde mit Abbrechen beendet
Else
'Dialog wurde mit OK beendet
'Prüfen der Pflichtfelder
If Source.Document.Feldname(0) = "" THen
Messagebox "Feldname darf nicht leer sein"
Continue = False 'Dialogbox bleibt offen
EXit Sub
End If
End If
...
End Sub
Axel
-
Die standard- OK und Abbrechen- Buttons einer @Dialogbox erlauben kein "abfangen".
Für so eine Anforderung musst Du immer eigene Buttons einsetzen. Setze die Optionen "[NOCANCEL]" und "[NOOKCANCEL]" um die Systemeigenen Buttons zu verbergen.
daqnn erstell Deine eigenen Buttons und prüfe in diesen die Gültigkeit.
Dazu gibt es zwei Möglichkeiten.
1. Im Feld selbst eine eingabevalidierung hinterlegen:
@If( @ThisValue = "" ; @Failure( "Dieses Feld muss ausgefüllt werden") ; @Success );
dann im Button:
@If( !@IsValid ; @Return( "" ) ; "" );
@Command( [RefreshParentNote] );
@Command( [FileCloseWindow] );
2. im Button die Validierung machen:
@If( DeinFeld = "" ; @Return( @Prompt( [OK] ; "FEHLER" ; "Dieses Feld muss ausgefüllt werden" ) ) ; "" );
@Command( [RefreshParentNote] );
@Command( [FileCloseWindow] );
HTH
Tode
-
Die standard- OK und Abbrechen- Buttons einer @Dialogbox erlauben kein "abfangen".
Für so eine Anforderung musst Du immer eigene Buttons einsetzen. ...
Wieso muss man?
Wenn man dass in QureyClose-Event mit NotesUIDocument.DialogBoxCanceled macht, muss man nicht.
Axel