Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: Gutierrez am 07.02.17 - 13:26:13

Titel: Datenstruktur in DialogBox (Form) übergeben
Beitrag von: Gutierrez am 07.02.17 - 13:26:13
Moin liebe Gemeinde,

ich habe eine ScriptLibrary, die ein paar Klassen enthält.
Ein Agent hat diese ScriptLibrary eingebunden und tut mit den Klassen etwas - lädt Daten in die Strukturen.
Dann ruft der Agent eine NotesUIWorkspace.DialogBox() auf. Ich möchte diese geladenen Datenstukturen jetzt in der Form weiterverarbeiten/modifizieren.

Geht das überhaupt? ???

Beste Grüße
Titel: Re: Datenstruktur in DialogBox (Form) übergeben
Beitrag von: Tode am 07.02.17 - 14:12:34
ja klar, warum sollte das nicht gehen?
Titel: Re: Datenstruktur in DialogBox (Form) übergeben
Beitrag von: Gutierrez am 07.02.17 - 14:38:48
Achso, wenn ich Datenstrukturen meine, dann meine ich nicht Textlisten, die ich in Items transportieren kann, sondern Objekte.

Ich stehe da gerade auf dem Schlauch.

Beste Grüße
Titel: Re: Datenstruktur in DialogBox (Form) übergeben
Beitrag von: Peter Klett am 07.02.17 - 14:55:55
Und was willst Du mit den Objekten in einer Dialogbox machen? Üblicherweise nimmt man Dialogboxen dazu, um Daten zu verändern. Dahinter liegt eine Maske, die dazu verwendet wird. Kannst Du Deine Objekte in einem Dokument mittels einer Maske darstellen, ist es dasselbe in einer Dialogbox. Letztlich sind es aber alles Items, die Du bearbeiten kannst. Was sollte es sonst sein?
Titel: Re: Datenstruktur in DialogBox (Form) übergeben
Beitrag von: Gutierrez am 07.02.17 - 16:04:17
Also etwas konkreter:

Ich habe eine Liste (Private m_lstListe List as MeineKlasse), innerhalb einer Klasse (AndereKlasse) wiederrum, die ich in einem Agent ausführe:

Code
Sub Initialize
  Dim cMyClass as New AndereKlasse
  Call cMyClass.DoSomething()
End Sub

DoSomething() füllt mir meine m_lstListe mit Daten z.B.

Code
Dim cTemp as New MeineKlasse
Set cTemp.DritteKlasse = New DritteKlasse
cTemp.EinfacheProperty = True

'Schleife
Set m_lstListe("KeyX") = cTemp 
'Ende Schleife


If ws.DialogBox("(Meine Form)",,,,,,,,,,ganz viele Parameter,,,,tempDocument,,,,,) Then

End If

Ich sortiere/filtere/aggregiere meine Daten also für die DialogBox. Und jetzt möchte ich meine Variable m_lstListe aber in Sub Click eines Buttons in der Form zur Verfügung haben.

Geht das so herum? (Sonst muss ich die Aufbereitung ins Init der Form verschieben oder sowas....)

Beste Grüße
Titel: Re: Datenstruktur in DialogBox (Form) übergeben
Beitrag von: Peter Klett am 07.02.17 - 17:42:13
ok, Vorhaben verstanden.

Ich denke, dass das allein schon wegen des Private nicht klappt. Übergeben als Variable kannst Du die Liste der Objekte m.W. nicht. Probieren würde ich, in einer Scriptbibliothek in den Globals eine (testweise ganz einfache) Variable zu definieren, diese im Script zu setzen und in der Dialogbox (also in der Maske, die dahinter liegt) darauf zuzugreifen. Natürlich muss die Maske die gleiche Bibliothek verwenden.

Wenn ich darauf wetten müsste, würde ich sagen, dass es nicht geht, aber einen Versuch ist es wohl wert.

Wir haben in einer unserer zentralen Scriptbibliotheken eine Variable globaledaten List As Variant, da können wir alles hineinpacken, was wir irgendwo anders wiederverwenden wollen, ob es aber soweit reicht, dass es in einer Dialogbox vorhanden ist? Will ich nicht wirklich glauben ...

Evtl. könntest Du die Daten der Objekte irgendwo ablegen (z.B. als ein XML oder in einem ähnlichen Format in einem Feld des Dokuments, mit dem die Dialogbox arbeitet) und beim Öffnen der Dialogbox die Daten von dort wieder in die innerhalb des Maskenscripts neu erstellten Objekte schreiben, damit könnte die Dialogbox recht allgemeingültig gehalten werden, da das aufrufende Script für die Daten sorgt, nicht die Box. Das hängt natürlich stark von den Daten innerhalb des Objekts ab.

Auf jeden Fall ein spannendes Thema ...
Titel: Re: Datenstruktur in DialogBox (Form) übergeben
Beitrag von: thkn777 am 09.02.17 - 14:17:52
ok, Vorhaben verstanden.

Ich leider nicht  :-: :'(

Das Thema hört sich interessant an, aber ich verstehe im Moment nicht, was NICHT geht. So weit bin ich:

Button in Notesmaske:
Code
Sub Initialize
	Dim uiws As New NotesUIWorkspace
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim res As Variant
	
	Set db = session.Currentdatabase
	Set doc = db.Createdocument()
	
	res = Evaluate (|"eins":"zwei":"drei"|,doc)
	doc.werte = res
	
	If uiws.Dialogbox("atnotes1", True, True, False, False, False, False, "atnotes", doc, True, False, True) Then
		Print "ausgewählt wurde " & doc.ergebnis(0)
	End If
End Sub

Dazu eine Teilmaske mit Dialogliste "ergebnis", die die Vorgabewerte aus "werte" zieht.

Ich drücke den Button, die Teilmaske geht auf, aus der Liste wähle ich z.B. "zwei" aus, drücke OK  und in der StatusBar meines Notes Clients steht, daß ich "zwei" ausgewählt habe.

@Gutierrez
Kannst Du nicht einfach genauso ein temporäres Dokument erzeugen mit Deiner Schlüsselwortliste und dann den Dialog aufrufen? Wo genau klemmt es?

Hilf mir mal bitte, Dein Problem genauer zu verstehen. Vielleicht fällt mir dazu ja dann was ein...

Verwirrte Grüße,
Th.
Titel: Re: Datenstruktur in DialogBox (Form) übergeben
Beitrag von: Gutierrez am 09.02.17 - 14:29:34
Hallo thkn777,

schau mal bitte meinen dritten Post in diesem Thread an. Da ist das Problem konkret erläutert.
Ich hab leider keine simple Textliste, die ich im Zugriff haben möchte, sondern ein Liste mit Objekten, die beliebig komplex sein können.

Beste Grüße  8)
Titel: Re: Datenstruktur in DialogBox (Form) übergeben
Beitrag von: jBubbleBoy am 09.02.17 - 15:44:23
@Gutierrez: Das geht leider nicht.
Initiiere deine Objekte in der Dialogmaske, ggfs. muss du der Dialogmaske noch fehlende Werte zum Erzeugen der Objekte mit übergeben ... und Ergebnisse speichern nicht vergessen ;)
Titel: Re: Datenstruktur in DialogBox (Form) übergeben
Beitrag von: Tode am 09.02.17 - 16:01:44
Man kann tatsächlich über Remote- Binding und mittels gemeinsamer Script- Library sowas erreichen, das ist aber mega- heftig. Kannst Dich ja mal hier einlesen, wie das geht.
Das Beispiel ist zwar für das gemeinsame Verwenden von Variablen zwischen Ansicht und Maske, funktioniert aber auch mit zwei Dokumenten...

http://avatar.red-pill.mobi/nathan/escape.nsf//d6plinks/NTFN-75CGS2
http://avatar.red-pill.mobi/nathan/escape.nsf//d6plinks/NTFN-75CJ6F

Leider sind die Artikel sehr alt, und aus dem Internet quasi komplett verschwunden, weshalb ich Dir nur die verstümmelte Version verlinken kann, ohne Screenshots...

Das hier war mal der Original- Link, vielleicht gibt es den ja noch in irgendeiner Timemachine / in einem archiv:
www.lotus911.com/nathan/escape.nsf/d6plinks/NTFN-75CGS2

Titel war "ESCAPE VELOCITY Part 1 - The Revolution will not be televised"

Ich habe das schon implementiert, das geht tatsächlich, aber ist wirklich sehr komplex.
Titel: Re: Datenstruktur in DialogBox (Form) übergeben
Beitrag von: Gutierrez am 09.02.17 - 16:54:07
Vielen Dank für die Links. Ich mag es hart ;D
Ich versuche nächste Woche mal was darüber herauszufinden :D

Beste Grüße