Sorry, meant to say the pointer that results from the Object Get name is to the entity
> On Apr 30, 2020, at 3:59 PM, kculotta via 4D_Tech <[email protected]> > wrote: > > 18.1 > > The pointer OBJECT Get name(Object current) is to the entity instead of the > to the entity attribute. > > The field is eg, MyEntity.MyName, but the pointer to the form object ends up > being ->MyEntity > >> On Apr 30, 2020, at 3:52 PM, lists via 4D_Tech <[email protected]> wrote: >> >> Sorry, Are you saying that you can get a valid pointer with Object get >> pointer() on a dot notation object of a form?, if so what version? >> >> Lahav >> >> -----Original Message----- >> From: 4D_Tech <[email protected]> On Behalf Of kculotta via >> 4D_Tech >> Sent: Thursday, April 30, 2020 2:50 PM >> To: 4D iNug Technical <[email protected]> >> Cc: kculotta <[email protected]> >> Subject: Re: Object notation replacement for use of Self in a script — v18 >> >> Yes, I'm using it, but it really seems like an artificial way to get an >> entity field's displayed contents. >> >> I'll explore your example. >> >> Keith - CDI >> >>> On Apr 30, 2020, at 3:45 PM, lists via 4D_Tech <[email protected]> wrote: >>> >>> Did you actually test this?, any kind of a get pointer on a form object >>> having a dot notation source will return a Nil pointer, regardless of the >>> name matching or not. >>> >>> If you are using matched names, you could use the following: >>> >>> Form[Object get name(object current)]:=DoWhatever(Form[Object get >>> name(object current)]) >>> >>> But that is not quite what we need to be truly generic.... >>> >>> Lahav >>> >>> -----Original Message----- >>> From: 4D_Tech <[email protected]> On Behalf Of kculotta via >>> 4D_Tech >>> Sent: Thursday, April 30, 2020 2:29 PM >>> To: 4D iNug Technical <[email protected]> >>> Cc: kculotta <[email protected]> >>> Subject: Re: Object notation replacement for use of Self in a script — >>> v18 >>> >>> This example does not avoid having to carefully name form objects and the >>> form object must have "matching" variable and object names: variable >>> entity.MyName with its object name of "MyName" >>> >>> // the object method >>> a_test (OBJECT Get name(Object current)) >>> >>> // a_Test >>> $ent:=OBJECT Get pointer(Object named;$1)-> $s:=$ent[$1] >>> ALERT($s) // the value entered into the text area >>> >>> Keith - CDI >>> >>>> On Apr 30, 2020, at 2:54 PM, Chris Belanger via 4D_Tech >>>> <[email protected]> wrote: >>>> >>>> I don’t wish to imply that I ‘prefer’ pointers; in fact, I am not using a >>>> single process variable, interprocess variable, or any other ‘vestiges’ of >>>> 4D Classic. I am ‘fully committed’ to object notation. I also use Storage >>>> extensively for system-wide values, and really love it. >>>> The problem I describe is that I need a way to generically ‘get’ and ’set’ >>>> the value of an object (meaning an entry variable on the form). >>>> >>>> 1) A variable is placed on the form. It’s “variable or expression” is: >>>> Form.LB.Browser_JobForms.en_edit.RigFrom. It has an object name of >>>> “enLSDFromRigDispatch” >>>> >>>> I have given it this name because it gives me a simple methodology to >>>> SHOW/HIDE a whole group of objects on the screen with OBJECT SET >>>> VISIBLE(*; “enLSD@“;…) >>>> >>>> Now I wish to use a standard project method to ‘pretty-format’ this >>>> variable. >>>> With ‘4D Classic’ this is easily achieved by making a project method that >>>> takes a POINTER in $1. >>>> The OBJECT SCRIPT would be something simple, like: >>>> PRETTY_FORMAT(Self) >>>> [PRETTY_FORMAT, given Self, would be able to get at the CONTENTS of >>>> the variable and do any formatting options needed] >>>> >>>> With ‘4D DOT NOTATION’ … >>>> — How do I create a simple OBJECT SCRIPT that would do something >>>> similar to that in 4D Classic? — I don’t feel that I should have to >>>> resort to using the ‘variable or expression’ name in every single script; >>>> because what happens if I change that variable for some reason and it >>>> totally screws up the object script? And it also makes it very complicated. >>>> THE OBJECT METHOD should be something as simple as: >>>> PRETTY_FORMAT ( Object Get Name ) —— instead of Self >>>> >>>> The PRETTY_FORMAT( ) should be able to get at and set the value of the >>>> form object from that name. >>>> >>>> Alternatively, if one wants to not bother having scripts for every input >>>> variable that needs PRETTY_FORMAT, they could just do it in the FORM >>>> METHOD: >>>> Case of >>>> :( Form event code = on load ) >>>> Form.col_toPrettyFormat:= new collection ( Object Name 1, Object Name 2 >>>> ) … // objects that need to be ‘Pretty Formatted' >>>> >>>> : ( Form event code = on losing focus ) >>>> $curObjectName:= Form Event.objectName >>>> … see if is in the list of .col_toPrettyFormat … >>>> PRETTY_FORMAT( $curObjectName ) >>>> >>>> … >>>> >>>> So how would one implement something like: >>>> PRETTY FORMAT ( Object Get Name ) in a script; or PRETTY FORMAT ( >>>> Form Event.objectName ) >>>> ??? >>>> >>>> Thanks, >>>> Chris >>>> >>>> p.s. what you describe, Keisuke, is in 4D v18r3; the ability to create >>>> classes. That is very intriguing and a necessary development in 4D, as is >>>> C_VARIANT( ). >>>> If one wanted to be able to have the script be: >>>> >>>> (Object get name).prettyFormat How would that be achieved? >>>> >>>> Even if in the script one could use “This”, but it is null. >>>> I think that ’This’ should be perfectly valid to use in an OBJECT SCRIPT, >>>> in a TRIGGER (referring to the record/entity being operated on), etc. But >>>> it is not, and I have trouble understanding why not. >>>> >>>> >>>> >>>> >>>>> On Apr 29, 2020, at 10:14 AM, Keisuke Miyako via 4D_Tech >>>>> <[email protected]> wrote: >>>>> >>>>> my feeling is that generic coding is very much possible in object >>>>> notation, but we need to accept that the approach is different. >>>>> >>>>> if you prefer to use pointers such as "Self", I think it's best to >>>>> avoid object notation, at least if your goal is to make the code >>>>> generic. >>>>> >>>>> it's not a defect of object notation, but the way to write generic >>>>> code is different. >>>>> >>>>> if you want to make your code generic in object notation, I think >>>>> you need to fully commit. >>>>> >>>>> what I mean by that, is that you need to think of objects and classes, >>>>> properties and methods. >>>>> >>>>> basically, instead of >>>>> >>>>> doIt(Self) >>>>> >>>>> you would write >>>>> >>>>> $obj.doIt() >>>>> >>>>> where the doIt() formula works on "This". >>>>> >>>>> in my opinion, to take full advantage of object notation, it is >>>>> pretty much mandatory to use >>>>> >>>>> This >>>>> Signal >>>>> Formula >>>>> Form >>>>> >>>>> extensively, as well as >>>>> >>>>> Storage >>>>> New shared object >>>>> New shared collection >>>>> >>>>> strategically. >>>>> >>>>> simply replacing interprocess/process variables with object >>>>> notation, may semantically look like object based coding, but at >>>>> that level you may be losing major advantages of classic code, while >>>>> not gaining much from what the new way of coding has to offer. >>>>> >>>>>> On Apr 29, 2020, at 14:55, Chris Belanger via 4D_Tech >>>>>> <[email protected]> wrote: >>>>>> And v18r3 does not even have a solution to this in its documentation. >>>>> > > ********************************************************************** > 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] **********************************************************************

