Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Silver am 18.11.05 - 08:37:05

Titel: Layoutbereich über @DialogBox -> Pflichtfeld prüfen
Beitrag 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.
Titel: Re: Layoutbereich über @DialogBox -> Pflichtfeld prüfen
Beitrag von: gossifu am 18.11.05 - 09:48:38
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
Titel: Re: Layoutbereich über @DialogBox -> Pflichtfeld prüfen
Beitrag von: stitze am 18.11.05 - 09:57:51
Vieleicht könnte dir aber auch @PickList weiterhelfen?
Titel: Re: Layoutbereich über @DialogBox -> Pflichtfeld prüfen
Beitrag von: Axel am 21.11.05 - 08:30:56
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
Titel: Re: Layoutbereich über @DialogBox -> Pflichtfeld prüfen
Beitrag von: Tode am 21.11.05 - 10:11:06
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
Titel: Re: Layoutbereich über @DialogBox -> Pflichtfeld prüfen
Beitrag von: Axel am 21.11.05 - 10:36:35
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