4D View Pro et dateModified -> isModified

Bonjour,
je me mets à 4D View Pro, et c’est toujours un peu la galère pour gérer le simple flag “isModified” pour savoir, en fermeture de fiche, si je dois présenter mon dialogue à trois boutons “A été modifié, Sauver, Ne pas sauver, annuler”.

Bref, en effet, dans l’objet au départ de mon champ, il y a bien une propriété “dateModified”.
<code 4D>
VP IMPORT FROM OBJECT (“vpArea”;[Feuilles_4DV]viewPro)
dateModified4DWPOpen:=OB Get([Feuilles_4DV]viewPro;“dateModified”;Is text)

</code 4D>
Je la sauve pour la comparer à la fin.

Et à la fin, ben pour relire cette valeur, je fais :
<code 4D>
$VP_areaPtr:=OBJECT Get pointer(Object named;“vpArea”)
$vpAreaObj:=VP Export to object (“vpArea”)
$dateModifiedClose:=OB Get($vpAreaObj;“dateModified”;Is text)
$isModified:=($dateModifiedClose#dateModified4DWPOpen)

</code 4D>

Et là, ma date de modification est celle de maintenant où je clique pour tester, que j’ai modifié ma feuille View ou pas… “2019-12-07T14:59:04Z”. Comme si VP Export to object mettait à jour cette propriété.
Qui sait comment détecter cela simplement ?
En fait, j’aimerais récupérer cette valeur dans l’objet de zone, et non pas après avoir fait VP Export to object qui ne serait nécessaire justement que si la zone a été modifiée.

Avec 4D Write Pro, cela marche car on est directement dans l’objet, sans passer par VP IMPORT FROM OBJECT et VP Export to object, sans doute.

… et aussi, comment mettre la zone en non modifiable - pour quand mon enregistrement est en lecture seule ?

Rien que la routine, quoi…

Bonjour,

: Olivier GRIMBERT

je me mets à 4D View Pro, et c’est toujours un peu la galère pour
gérer le simple flag “isModified” pour savoir, en fermeture de fiche,
si je dois présenter mon dialogue à trois boutons “A été modifié,
Sauver, Ne pas sauver, annuler”.

Pour ce qui est de détecter les changements dans votre document, vous
pouvez vous référer au fil
http://forums.4d.com/Post/FR/30356179/1/30356180#303561804D View Pro

  • How to detected changes ?>:

Il y a 2 possibilités:

  • Si vous utilisez l’interface “Ribbon”:
    <code 4D>
    $isModified:=WA Evaluate
    JavaScript(*;“ViewProArea”;“designer.actions.isFileModified”)
    </code 4D>

  • Si vous n’utilisez pas d’interface, utilisez l’évènement “on cell
    modification” pour mettre votre bit isModified à true

: Olivier GRIMBERT

… et aussi, comment mettre la zone en non modifiable - pour quand
mon enregistrement est en lecture seule ?

Rien que la routine, quoi…

Une commande pour gérer la modification est prévue et sera bientôt disponible.

En attendant, pour rendre la sheet courante non modifiable, vous pouvez utiliser ce code:
WA Evaluate Javascript(*;“area”;“Utils.spread.getActiveSheet().options.isProtected=true;”)

et pour le rendre modifiable:
WA Evaluate Javascript(*;“area”;“Utils.spread.getActiveSheet().options.isProtected=false;”)

Pour avoir plus de renseignement vous pouvez vous référer au fil: http://forums.4d.com/Post/FR/29810279/3/30203253#30203253feature Request - 4D View Pro - Ribbon and Edition>

Merci !
On voit donc que votre librairie utilisée est bien du javascript…

Bon, j’ai finalement contourné en utilisant une bonne listbox des familles, rapide et légère, je trouve le nouveau 4D View PRO bien lourd et lent à la tâche…

Mais merci de votre réponse, cela servira plus tard.