Kirk, Thanks. That’s certainly food for thought, and underlines my impression that this ability to pass information in both directions will be fantastically useful.
Jeremy > On 29 Apr 2019, at 15:39, Kirk Brooks via 4D_Tech <[email protected]> > wrote: > > Jeremy, > > In the situation you describe I initialize the object that will be passed > to the Dialog first. Like so: > > $formObj:= New object("listbox_1";New > Collection(100;200;300);"someObject";New Object("foo";"Hello world") > DIALOG("MyDialogForm";$formObj) > > // Dialog is closed and $formObj contains any/every thing added to it or > edited in the Dialog > > > This also allows you to configure what's going to be in Form. Such as > various entity selections, lists or what not. In the example above your > form could have a collection based listbox whose datasource is > 'Form.listbox_1' and it could display the 3 numbers. You could set this up > in the On Load form event also, of course. > > And it works in a similar way with a subform: > > $subformObj:= New object("listbox_1";New Collection(100;200;300)) > Object get pointer(Object named;"subform_object")->:=$subformObj > OBJECT SET SUBFORM(*;"subform_object";"MyDialogForm") // subform_object is > an object type var > > // formObj contains any/every thing added to it or edited in the subform > > > When the subform object is itself an object or collection Form, in the > context of the subform, takes on the value of the subform object. > The great thing about this is that the code for the actual 4D form runs > identically whether it's in a dialog or a subform at least with respect to > Form (the function). > > But wait, there's more. > In the example right above let's say instead of $subformObj being a new > object I assign it some object already in the parent form: > > Object get pointer(Object named;"subform_object")->:=Form.someObject > OBJECT SET SUBFORM(*;"subform_object";"MyDialogForm") > > > Now in the context of the subform Form contains a 'reference' (say that > with an accent like JPR) to 'someObject' which was originally defined > before the dialog was loaded. Let's say the user changes 'foo' to "Hello > everyone". > In the subform: > > Form.foo = "Hello everyone" > > In the parent form: > > Form.someObject.foo = "Hello everyone" > > > I think this gives a whole new value to subforms. I can design forms to > deal with a particular task or set of data and use them as a dialog or open > the within a dialog without having to change the code. Have you ever wound > up, or come across, a form with 10+ pages? These are ugly and difficult. > Instead you could have one page with a subform. > > > And gee we could use some more words for describing these things. > > On Mon, Apr 29, 2019 at 1:05 AM Jeremy Roussak via 4D_Tech < > [email protected]> wrote: > >> Is it safe to use the object returned by the Form command as a means of >> passing data back to the caller? That is, should the method of the form >> opened in DIALOG regard its Form object as read-only, or is it allowed to >> alter it? >> >> At present, changing the values of the object passed by DIALOG works: the >> new values are available to the caller when the DIALOG command returns. >> It’s quite handy. But there’s nothing in the documentation, as far as I can >> see, to indicate whether this is sanctioned or likely to change. >> > -- > Kirk Brooks > San Francisco, CA > ======================= > > What can be said, can be said clearly, > and what you can’t say, you should shut up about > > *Wittgenstein and the Computer * > ********************************************************************** > 4D Internet Users Group (4D iNUG) > Archive: http://lists.4d.com/archives.html > Options: https://lists.4d.com/mailman/options/4d_tech > Unsub: mailto:[email protected] > ********************************************************************** ********************************************************************** 4D Internet Users Group (4D iNUG) Archive: http://lists.4d.com/archives.html Options: https://lists.4d.com/mailman/options/4d_tech Unsub: mailto:[email protected] **********************************************************************

