Domino 9 und frühere Versionen > ND8: Entwicklung

Verkettung von Dialogboxen

<< < (2/3) > >>

Driri:
Hi Mitch,

danke für die Info. Das werde ich mal ausprobieren.


Ansonsten habe ich mir gerade einen alternativen Ablauf ausgedacht, bei dem ich auf eigene Buttons verzichte und die OK/Cancel-Buttons der Dialogbox nutze. Den Status kann ich ja abfragen und entsprechend darauf reagieren. Dann müßte ich die ganze Verarbeitung aus der aufrufenden Funktion heraus steuern.

Ich vermute auch, daß genau das das Problem bei dem von mir gebastelten Konstrukt ist. Im QueryClose der Maske der Dialogbox habe ich offensichtlich keinen Zugriff mehr auf das Dokument und kann somit auch nicht das nächste in der Reihe ermitteln und via Dialogbox öffnen.

Peter Klett:
Ich habe sowas mal so gebaut, dass ich schon die Fragen in der Dialogbox frei definieren kann, das Ganze Datenkonstrukt wird dann in einer xml-Datei gespeichert und vom Befragten wieder rückwärts interpretiert. Dabei ist alles Mögliche drin, mit Bedingung, ob eine Frage übersprungen wird, die Antwort korrekt ist, die Antworten auswählbar oder frei zu tippen sind usw... Falls Dich da ein paar Ansätze interessieren, melde Dich gerne per PM, ich möchte solche Internas nicht zu öffentlich ausstellen. Vielleicht am Ende der Diskussion ein paar Knackpunkte.

Nachtrag: Das Ganze funktioniert, ohne dass die Dialogboxen jeweils geschlossen und wieder geöffnet werden, bei Betätigen der entsprechenden "Weiter"- und "Zurück"-Schaltflächen werden im Hintergrund nur die Informationen in den Feldern ausgetauscht.

Peter Klett:
Um auf Deine konkrete Frage zu dem Index und zum Öffnen der nächsten Dokumente einzugehen, würde ich die Steuerung nicht innerhalb, sondern außerhalb der Dialogbox machen. Etwa so:

Suche erstesDokument
Set aktuellesDokument = erstesDokument
Do While not aktuellesDokument Is Nothing
   If Not workspace.Dialogbox (.... aktuellesDokument ....) Then
      Exit Do
   End If
   Set aktuellesDokument = nächstes Dokument (wie immer Du das ermittelst)
Loop

Ich würde es dann auch wieder über ein temporäres Dokument machen, aber das habe ich schon ein paarmal beschrieben. Eventuell auch über einen ganzen Satz davon (List As NotesDocument), das hängt aber davon ab, was bei Abbruch passieren soll. Sollen dann die bis dahin beantworteten Fragen beantwortet bleiben oder nicht?

(Nachtrag: Hattest Du unter #5 schon selbst so beschrieben, hatte ich überlesen)

Driri:
Danke, so wie in deiner zweiten Antwort skizziert, hatte ich mir das jetzt überlegt aufzubauen.

Ich finde das Arbeiten mit den Dokumenten ganz nett, weil dann beim Abbruch trotzdem die bisherigen Antworten erhalten bleiben würden, ohne daß ich da noch eingreifen muß.

Fineas:
Hallo,

Das korrekte Stichwort hast Du selbst schon gegeben: Steuerung durch die aufrufende Funktion. Ob dann auf neu angelegte Unterdokumente zugegriffen werden muss ist wesentlich davon abhängig, wozu die Daten hinterher benötigt werden. Grundsätzlich würde ich auf unnötig viele Dokumente verzichten und die Informationen einmal auslesen und in einem zentralen Dokument sammeln. Aber wie gesagt: das hängt stark davon ab, was hinterher damit passieren soll. "Form" wechseln war unglücklich formuliert. Ich hatte dabei meine Lösung vor Augen und da geht es im wesentlichen darum, in mehreren aufeinanderfolgenden Dialogboxen mit unterschiedlichem Maskenaufbau Informationen abzufragen. Dabei kommt ein Dokument als Container zum Einsatz, das lediglich die Darstellung ändert, die Daten aber weiter trägt. Vorteil: der Dialog kümmert sich maximal um die Validierung, alles andere wird außerhalb erledigt. Jeder Schritt läßt sich gut isolieren und sichern. Die dynamische Variante mit dem Feldertausch hat aus meiner Sicht den Nachteil, dass die Logik im Dialog drin sein muss und erst wenn alles verarbeitet ist die Daten geliefert werden. Da kann man zwar auch zaubern, aber für meine Zwecke unnötig kompliziert.

Gruß, Heiko

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln