Autor Thema: ESC verhindern  (Gelesen 3541 mal)

Offline vbis

  • Frischling
  • *
  • Beiträge: 23
ESC verhindern
« am: 05.02.10 - 12:31:04 »
Hallo liebe Notes-Gemeinde.

Ich habe da mal ein Anliegen, dass ich selber nur mit einer Kombination von Formel und Script-Sprache hinbekommen würde und hoffe auf Hilfe.
Das Thema wurde auch schonmal behandelt, damals aber über Script gelöst, was ich nicht nachbauen konnte, weil ich Script kaum (bis gar nicht) verwende.
Meine Hoffnung liegt jetzt in der guten alten Formelsprache...

Damit die Mitarbeiter die Schaltflächen nutzen (und damit auch weitere Aktionen neben dem Speichern ausgeführt werden), ist mein Anliegen die ESC-Taste "zu neutralisieren".
Dafür habe ich das Feld "SaveOptions" genutzt, sodass nicht mehr abgefragt wird, ob gespeichert werden soll.

Leider gehen eben doch manchmal die Mitarbeiter mit ESC aus veränderten Dokumenten heraus und verlieren so Ihre Arbeit.

Um das abzufangen, wollte ich jetzt eine Abfrage im Queryclose hinterlegen, um diese Problem zu beheben:
@If(@IsDocBeingEdited;

@Do(
_rc := @Prompt([YesNo];"Frage";"Wollen Sie wirklich abbrechen?");
   
   @If(_rc;
      SaveOptions="0";
      @return("Bitte klicken Sie ansonsten auf die Schaltfläche <Speichern>, damit Ihre Änderungen nicht verloren gehen."))
);"")

In einem anderen Fall habe ich in Script mit continue = false gearbeitet, was das Schließen auch verhindert.
Leider bin ich in Script nicht besonders fit, sodass ich den restlichen oberen Teil nicht nachbauen kann und das @return (ich habe auch schon andere Sachen probiert) verhindert leider nicht das Schließen des Dokumentes.

Über Ihre/Eure Unterstützung bei dem kleinen Problem wäre ich sehr dankbar.

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: ESC verhindern
« Antwort #1 am: 05.02.10 - 18:27:06 »
Ich würde mit LotusScript einfach im QueryClose continue = false setzen.

(Mit entsprechendem Prompt davor)

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: ESC verhindern
« Antwort #2 am: 05.02.10 - 18:39:42 »
Nö, nö - das wird nix: Lediglich ein Continue = False würde ja dazu führen, dass man das Dokument nie wieder schliessen kann und aus der Nummer nur herauskommt, wenn man den Client killt.
Ausserdem will Thomas eine Formelsprachen-Lösung.

Mein erster Rat: Lerne LotusScript, Thomas. Ohne vergibst Du Dir ja nur Möglichkeiten.

Nummer 2: Mit dem QuerySave / QueryClose in Formelsprache wirst Du nicht froh. Füge Deiner Maske ein editierbares und verstecktes Feld hinzu. Setze dies durch Deinen Speichern-Button auf einen bestimmten Wert. Prüfe in der Feldvalidierung und unter der Bedingung "Das Dokument wird gerade gespeichert", ob der Wert da drin steht. Wenn nicht: Gemecker! Wenn ja, muss Du dafür sorgen, dass der Wert nicht mit abgespeichert wird, sonst hast Du Deine Prüfung für die Zukunft ausser Betrieb genommen.

Coden musst Du jetzt selber. Dabei stellst Du vielleicht auch fest, dass das mit LotusScript vielleicht doch einfacher gehen könnte  ;)

Bernhard

Offline vbis

  • Frischling
  • *
  • Beiträge: 23
Re: ESC verhindern
« Antwort #3 am: 06.02.10 - 16:56:19 »
Das hilft mir auf jeden Fall schon mal weiter.

Lotus Script ist so eine Sache... Die unterschiedlichen Arten von Front- und Backend haben sich mir leider noch nicht so richtig erschlossen.

Ich werde es am Montag gleich mal so probieren, allerdings würde es mich auch interessieren, ob es etwas vergleichbares zu continue=false auch in der Formelsprache gibt. @failure, @return und ähnliches hat immer nicht funktioniert.

Euch allen noch ein schönes Wochenende!


Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: ESC verhindern
« Antwort #4 am: 08.02.10 - 10:56:46 »
Was vergleichbares gibt es in Formelsprache (soweit ich weiß) nicht.
Der LS-Code für dein Problem wäre ja eigentlich ziemlich simpel:

Code
if msgbox("Wollen Sie abbrechen", 4) = 7 then
  continue = false
end if

(ungetestet!). Schau dir ggf. die Hilfe zu msgbox mal an...
Es sind ja auch immer wieder gute Beispiele in der Hilfe.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline vbis

  • Frischling
  • *
  • Beiträge: 23
Re: ESC verhindern
« Antwort #5 am: 08.02.10 - 11:26:53 »
Vielen Dank für Eure Hilfe,

das hat mir alles sehr gut weitergeholfen und zusammen mit der Designer-Hilfe habe ich jetzt folgendes implementiert:

Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = workspace.CurrentDocument
   
   If uidoc.EditMode = True Then
      If Msgbox("Wollen Sie wirklich abbrechen, ohne Ihre Änderungen zu speichern?", 4,"Abbrechen?") = 7 Then
         continue = False   
      End If
   End If

Das klappt exakt so, wie ich es wollte!

Also nochmal besten Dank und viele Grüße!

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: ESC verhindern
« Antwort #6 am: 08.02.10 - 11:28:26 »
Hallo,

Eine kleine Frage zu Deinem Script.

Wo in Deiner Form hast Du dieses implementiert?


Andreas

Offline vbis

  • Frischling
  • *
  • Beiträge: 23
Re: ESC verhindern
« Antwort #7 am: 08.02.10 - 12:14:39 »
Hallo Andreas,

eine Kleinigkeit fehlte noch.

Ich hatte es im Queryclose. Konnte dann aber nicht mehr speichern....

Habe jetzt eine Kombination aus beiden Tipps verwendet und es hat geklappt:

Im Queryclose:

Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = workspace.CurrentDocument
   
   If uidoc.FieldGetText( "Speichern_ist_OK" ) = "" Then
      If uidoc.EditMode = True Then
         If Msgbox("Wollen Sie wirklich abbrechen, ohne Ihre Änderungen zu speichern?", 4,"Abbrechen?") = 7 Then
            continue = False   
         End If
      End If
   End If



Und im Postmodechange:

Dim session As New NotesSession
   If source.EditMode Then
      Call source.FieldSetText _
      ( "Speichern_ist_OK", "" )
   End If



Im Speicherbutton steht dann einfach u.a.:

@SetField("Speichern_ist_OK" ; "Speicherbutton_wurde_verwendet")


Das neue Feld Speichern_ist_OK hat keinen Vorgabewert.

Ich denke so haben die Anwender einen wesentlich besseren Komfort.

Vielen Dank nochmals!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz