Lorsqu’un document 4D Write Pro est en mode édition, il est souvent utile de savoir s’il a effectivement été modifié par l’utilisateur final. Sur la base de cette information, les actions ou les interfaces peuvent être ajustées pour être plus conviviales.
A partir de 4D v19 R7, c’est maintenant plus facile que jamais.
BASE DE DONNEES DEMO
DOCUMENTS MODIFIÉS
Un document peut être modifié de différentes manières. Soit :
- par programmation à l’aide d’une des nombreuses commandes, soit
- par l’utilisateur final lui-même.
Un document modifié doit généralement être sauvegardé, que ce soit au niveau du contenu (ajout, modification, suppression de texte, de tableaux, d’images…) ou de l’apparence (style, marges, orientation, couleurs…).
Dans tous les cas, il faut pouvoir offrir la possibilité de la sauvegarder via un bouton ou un menu, et dans le cas extrême où l’utilisateur voudrait partir sans l’avoir sauvegardée, pouvoir lui offrir une option de rattrapage (« voulez-vous sauvegarder… ? »).
Cela se fait maintenant très rapidement en testant le nouveau document. Attribut modified.
Le principe de cet attribut est simple. Lors de la création ou du chargement du document, sa valeur est fixée à False. Puis, dès que le document est modifié (par programmation ou action de l’utilisateur), la valeur passe automatiquement à True.
Il devient alors simple de prendre les bonnes décisions 🙂
- Mise à jour de l’interface
OBJECT SET ENABLED(*; "btnSave";WParea.modified) // true or false
- Confirmez l’enregistrement
If (Form event code=On Unload)
If (WParea.modified)
CONFIRM("Would you like to save the document ?"; "Save"; "Discard")
If (ok=1)
// do what you have to do
End if
End if
End if
Qu’il s’agisse d’un espace supprimé ou d’une virgule ajoutée, d’un seul caractère mis en gras ou en italique, le document.modified deviendra True. Même en cas d’annulation, le document.modified restera True.
Il est toutefois possible de forcer la valeur de cet attribut par programmation, par exemple, une fois le document enregistré.
If (WParea.modified)
// save document
// (…)
// then set the status to false
WParea.modified:=False // will stay false until next document modification
End if
… OU PAS MODIFIÉ ?
Certaines actions ne peuvent que modifier l’apparence des documents sans en modifier le contenu ; ce sont les propriétés d’affichage.
Vous pouvez modifier le facteur de zoom, afficher ou non les règles horizontales et verticales, choisir d’afficher les caractères invisibles, les formules, les en-têtes ou les pieds de page, etc. Rien de tout cela ne sera enregistré. Cela signifie que le document n’est pas modifié et que, par conséquent, l’attribut modified reste False. Voir la documentation sur ce nouvel attribut.
Conclusion
Cette nouvelle propriété, très simple, permet de détecter rapidement les modifications apportées à un document et d’effectuer les actions correspondantes. Soit de manière transparente (en effectuant des sauvegardes automatiques lorsqu’un document reste ouvert, par exemple), soit en modifiant intelligemment l’interface en fonction des circonstances !