Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TMC am 20.12.03 - 19:17:52
-
Hi,
folgende Situation:
- Ein Dok ist in Bearbeitung
- Durch Klick auf einen Button wird ein Script ausgeführt
Im Script werden ein paar Felder des Dokumentes gesetzt, etc.
Dann wird im Script eine Dialogbox aufgerufen:
In der Dialogbox ist u.a. 1 Textfeld "Message".
Nach Klick auf "OK" in der Dialogbox will ich den Inhalt der Message im ursprünglichen Script weiterverarbeiten.
Ein gleichnamiges hidden Textfeld "Message" im Dokument selbst will ich vermeiden.
Ist das so überhaupt möglich? Muss ich in einem Event der Dialogbox was einbauen?
Oder Workaround nötig? (z.B. neues docTemp erstellen und das dann der Box übergeben?
Eine einfache Lösung wäre super, ich weiß aber nicht ob es da eine simple Methodik gibt
TMC
-
Entweder Du machst das, wie Du es schon angedeutet hast, mit einem TempDoc, kopierst hinein, was Du brauchst und bearbeitest das Ergebnis nach Bedarf und speicherst das TempDoc nicht ab.
Oder Du entfernst das/die überflüssigen Felder nach dem Schliessen der Diabox nach der Verarbeitung wieder aus dem aktuellen Dokument.
Ich persönlich würde die Variante mit dem TempDoc bevorzugen, damit ist sichergestellt, dass alle Bearbeitungsspuren, die die Diabox allenfalls hinterlassen könnten, entfernt werden und die Möglichkeit von SideEffects ist beschränkt. Dafür ist Setup und Nachbearbeitung eventuell etwas komplexer als das direkte Einbinden des aktuellen Dokumentes.
-
danke für die Infos :-)
TMC
-
Vielleicht noch eine Ergänzung dazu, das Gesagte gilt für die Situation hier, wo zusätzliche Hilfsfelder erforderlich sind. Wenn es keine solchen Hilfsfelder braucht, spricht natürlich nichts dagegen, die Diabox direkt aufs aktuelle Doc loszulassen.
-
Ich persönlich würde die Variante mit dem TempDoc bevorzugen, damit ist sichergestellt, dass alle Bearbeitungsspuren, die die Diabox allenfalls hinterlassen könnten, entfernt werden
Heißt das ich brauche vorher keine Items im tmpDoc anlegen und alle Felder werden durch "OK" in der Dialogbox in mein tmpDoc geschrieben?
TMC
-
Ja, Du musst nur Items vorher belegen, die schon einen Wert haben sollen oder falls Du irgendwelche Auswahllisten oder so hast, musst Du allenfalls die Werte der Listen vorher hinterlegen. Eine Diabox funktioniert eigentlich genau gleich, wie jedes Dokument im Editmodus, ausser dass es in einem modalen Fenster erscheint, was bedeutet, dass man das Fenster nicht verlassen kann. Thats it.
-
OK, grad mal getestet:
'Create DocTemp
Dim docTemp As NotesDocument
Set docTemp = db.CreateDocument
'Create Items in docTemp
Dim messageItem As New NotesItem( docTemp, "Appr", "" )
Dim approverItem As New NotesItem( docTemp, "Message", "" )
Call uiws.DialogBox( "box_Appr", True, True, False, True, False, False, db.title, docTemp, True, False)
Msgbox docTemp.Appr(0)
Msgbox docTemp.Message(0)
So klappts einwandfrei, die Msgboxen zeigen den Inhalt dann sauber an.
Klammere ich die Zeilen
Dim messageItem As New NotesItem( docTemp, "Appr", "" )
Dim approverItem As New NotesItem( docTemp, "Message", "" )
aus, dann geht es allerdings nicht.
TMC
-
Das ist aber klar, Du hast den Parameter "NoNewFields" auf TRUE gesetzt und verbietest damit der Diabox das Anlegen neuer Items
-
ach das meint die Option der Dialogbox :)
Jetzt hab ich das auch verstanden ;D
Danke,
TMC
-
jip und so klappts dann auch.
Sehen sollte mich da keiner beim Coden von Dialogboxen:
Untere Fensterhälfte: Designer mit Codefenster
Obere Fensterhälfte: Designerhilfe.
Dann 2 Stifte in der Hand und nach und nach am Bildschirm die ganzen Schalter durchgehen der Dialogbox
;D
TMC
-
;D ;D
Da hast Du offenbar die versteckte Kamera noch nicht entdeckt ;)