4D Write Pro – Détection des modifications de documents

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 !

Roland Lannuzel
- Product Owner & 4D Expert - Après avoir étudié l'électronique, Roland s'est lancé dans l'informatique industrielle en tant que développeur et consultant, créant des solutions pour les clients avec une variété de bases de données et de technologies. À la fin des années 80, il est tombé amoureux de 4D et l'a utilisé pour écrire des applications commerciales, notamment des systèmes de comptabilité, de facturation et de messagerie électronique. Il a rejoint la société en 1997 et a contribué à la conception de spécifications, d'outils de test et de démonstrations, ainsi qu'à la formation et à la présentation de la communauté 4D lors de nombreuses conférences. Il continue à façonner activement l'avenir de 4D en définissant de nouvelles fonctionnalités et des outils de développement de bases de données.