Yes, there are other ways to determine the modified state of a Write Pro 
object, but they all need to be managed by the developer (store the initial 
state in a global for later comparison) so it’s not a boolean flag manger by 
4DWrite. 

Jeremy French points out on the 4D Forum that the wk date modified attribute 
can be used similarly. https://forums.4d.com/NewPost/EN/18251904/30306464 
<https://forums.4d.com/NewPost/EN/18251904/30306464>

There’s a lot of Write Classic functionality that isn’t yet built into Write 
Pro. But that list is growing shorter with every release. R5 and R6 and v18 
have lots of new Write Pro support. Especially Style Sheets!

Tom Benedict

> On Nov 21, 2019, at 09:41, Doug Hall via 4D_Tech <4d_tech@lists.4d.com> wrote:
> 
> If this is necessary to do, it's unfortunate that one has to roll this
> functionality themselves. Especially since one could do this with the older
> 4D Write:
> 
>  // ----------------------------------------------------
> 
>  // Method: WR_AreaWasModified
> 
>  // Author: dhall
> 
>  // Date and time: 07/19/05, 14:06:32
> 
>  // ----------------------------------------------------
> 
>  // Called from: LtrTemplate_Save
> 
>  // Description: Returns whether or not 4D Write area $1 was modified.
> 
>  //
> 
>  //
> 
>  // Parameters
> 
>  // ----------------------------------------------------
> 
> *C_BOOLEAN*(*$0*)
> 
> *C_LONGINT*(*$1*;$Area)
> 
> $Area:=*$1*
> 
> *C_LONGINT*($DocModifiedInt)
> 
> *WR GET AREA PROPERTY *($Area;wr modified;$DocModifiedInt)
> 
> *$0*:=($DocModifiedInt=1)
> 
> 
> 
> I did notice that there is a READ ONLY object version property, so that one
> could theoretically do this:
> 
> 
> c_real($doc_version;$doc_NewVersion)
> 
> $doc_version:=WP Get Attributes(WP_Doc_Object;WK Version)
> 
> 
> // Display Edit dialog with the WP_Doc_Object 4D Write Pro area on it, and
> a save button which captures the (possibly) edited changes.
> 
> 
> if(OK=1) // Save button was clicked...
> 
>  $doc_NewVersion:=WP Get Attributes(WP_Doc_Object;WK Version)
> 
>  if($doc_NewVersion>$doc_version)
> 
>    // A change was made!
> 
>  end if
> 
> end if
> 
> 
> 
> ...however, I'm just now gokking how these new 4D Write Pro objects work,
> so I haven't actually tested this functionality. If that's NOT what's going
> on inside the 4D Write Pro object, then more documentation (and perhaps an
> example of how to use this attribute), are needed.
> 
> 
> Doug
> 
> On Wed, Nov 13, 2019 at 10:16 AM Eric Naujock via 4D_Tech <
> 4d_tech@lists.4d.com> wrote:
> 
>> Just for reference I am adding an  (Form event=On After Edit) to my Write
>> Pro object. This way any edit to the file will trigger a dirty event. Then
>> I will probably need to reset the dirty flag upon saving. Otherwise I will
>> wind up with hundreds of copies of the same document.
>> 
>>> On Nov 12, 2019, at 5:40 PM, Tom Benedict <benedic...@comcast.net>
>> wrote:
>>> 
>>> That’s correct. It’s not part of the Write Pro object.
>>> 
>>> Initially I tried to add an attribute to the WP object, but wasn’t
>> successful. I’m a ‘baby programmer’ with objects so I don’t know whether
>> its possible to add attributes to a Write Pro object. My limited efforts
>> failed.
>>> 
>>> Tom
>>> 
>>>> On Nov 12, 2019, at 14:29, Eric Naujock <e...@mac-cafe.com <mailto:
>> e...@mac-cafe.com>> wrote:
>>>> 
>>>> Reading in deeper. The WP_Information is a session variable object that
>> keeps track of the WP Pro object is not the actual WP Pro object. Just
>> asking to clarify.
>>>> 
>>>>> On Nov 12, 2019, at 5:20 PM, Tom Benedict <benedic...@comcast.net
>> <mailto:benedic...@comcast.net>> wrote:
>>>>> 
>>>>> Hi Eric,
>>>>> 
>>>>> If I understand your question correctly, I think you’re looking for a
>> “dirty” flag. As far as I know there is no built in function that track
>> this, so you’ll need to create your own.
>>>>> 
>>>>> Below are the three methods I use to track the state of a Write Pro
>> object. It was inspired by help I received on forums.4d.fr <
>> http://forums.4d.fr/>.
>>>>> 
>>>>> — Create an object in the On Load event of a Write Pro object call:
>>>>> 
>>>>>  // Method: WP_InitInformation
>>>>>  // ----------------------------------------------------
>>>>>  // User name (OS): Tom Benedict
>>>>>  // Date and time: 9/5/2019, 10:28:45
>>>>>  // ----------------------------------------------------
>>>>>  // Description
>>>>>  // bld277005
>>>>>  //
>>>>> 
>>>>> C_OBJECT(WP_Information)
>>>>> 
>>>>> If (OB Is defined(WP_Information))  // already exists
>>>>>    WP_Information.IsNewDocument:=False
>>>>> Else
>>>>>    WP_Information:=New object("IsNewDocument";False)
>>>>> End if
>>>>> 
>>>>> If (OB Get type(WP_Information;"DocumentInfo")=Is undefined)  //
>> doesn't already exists
>>>>>    WP_Information.DocumentInfo:=New
>> object("FilePath";"";"Modification";False)
>>>>> Else
>>>>>      // do nothing
>>>>> End if
>>>>> 
>>>>> — Update the object whenever the Write Pro document is modified (like
>> in the On Data Change event of a Write Pro object):
>>>>> 
>>>>>  // Method: WP_Information_SetModified([isModified])
>>>>>  // ----------------------------------------------------
>>>>>  // User name (OS): Tom Benedict
>>>>>  // Date and time: 9/5/2019, 11:07:29
>>>>>  // ----------------------------------------------------
>>>>>  // Description
>>>>>  // Set the Modification Property of WP_Information object
>>>>>  // See WP_Information_Init
>>>>>  // bld277005
>>>>>  //
>>>>> 
>>>>> C_BOOLEAN($1)
>>>>> 
>>>>> C_OBJECT(WP_Information)  // this object is initialized in
>> WP_Information_Init
>>>>> 
>>>>> If (Count parameters>0)
>>>>>    $isModified:=$1
>>>>> Else
>>>>>    $isModified:=True  // default
>>>>> End if
>>>>> 
>>>>> WP_Information.DocumentInfo.Modification:=$isModified
>>>>> 
>>>>> — Test the state wherever/whenever you wish with:
>>>>> 
>>>>>  // Method: WP_Information_isModified -> isModified
>>>>>  // ----------------------------------------------------
>>>>>  // User name (OS): Tom Benedict
>>>>>  // Date and time: 9/5/2019, 11:07:29
>>>>>  // ----------------------------------------------------
>>>>>  // Description
>>>>>  // Get the Modification Property of WP_Information object
>>>>>  // See WP_Information_Init
>>>>>  // bld277005
>>>>>  //
>>>>> 
>>>>> C_OBJECT(WP_Information)
>>>>> C_BOOLEAN($0)
>>>>> 
>>>>> $0:=(WP_Information.DocumentInfo.Modification=True)
>>>>> 
>>>>> HTH,
>>>>> 
>>>>> Tom Benedict
>>>>> 
>>>>>> On Nov 12, 2019, at 14:07, Eric Naujock via 4D_Tech <
>> 4d_tech@lists.4d.com <mailto:4d_tech@lists.4d.com>> wrote:
>>>>>> 
>>>>>> I have a series of records and want to detect whether the 4D Write
>> Pro object has been changed since it was loaded. This way I can keep a
>> version archive of older versions of a document available. Is there an easy
>> way I’m not seeing to know if the Write pro object has been changed since
>> it was created or loaded. Right now I al creating a Write Pro object since
>> 17R4 had an issues with saving rite Pro objects to a record in a
>> client-server situation. Though I think it may have been fixed in R5 or R6.
>>>>>> 
>>>>>> The Write pro object is created when the case is loaded as a free
>> standing object since the object odes not reside in the main record table.
>> Its lives in a large object table nearby since not all records have the
>> Write Pro object in it.
>>>>>> 
>>>>>> Or is there a way to have an object change detecting in an event that
>> would tell me there was a change in the object and that it needs to have
>> the old object saved to the History table.
>>>>>> *****
>>>>> 
>>>> 

**********************************************************************
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**********************************************************************

Reply via email to