4D Write Pro – Erkennung von Dokumentveränderungen

Wenn sich ein 4D Write Pro Dokument im Bearbeitungsmodus befindet, ist es oft hilfreich zu wissen, ob es vom Endanwender tatsächlich geändert wurde. Anhand dieser Information können Aktionen oder Schnittstellen benutzerfreundlicher gestaltet werden.

Ab 4D v19 R7 ist dies einfacher denn je.

DEMO-DATENBANK

GEÄNDERTE DOKUMENTE

Ein Dokument kann auf verschiedene Arten geändert werden. Entweder:

  • durch Programmierung mit einem der vielen Befehle oder
  • durch den Endbenutzer selbst.

Ein geändertes Dokument muss im Allgemeinen gespeichert werden, sei es in Bezug auf den Inhalt (Hinzufügen, Ändern oder Löschen von Text, Tabellen oder Bildern…) oder das Aussehen (Stil, Ränder, Ausrichtung, Farben…).

In jedem Fall müssen Sie in der Lage sein, die Möglichkeit zum Speichern über eine Schaltfläche oder ein Menü anzubieten, und im Extremfall, wenn der Benutzer die Seite verlassen möchte, ohne sie gespeichert zu haben, müssen Sie ihm eine Nachholoption anbieten können („Möchten Sie speichern…?“).

Dies ist nun sehr schnell durch das Testen des neuen document.modified Attributs möglich.

Das Prinzip dieses Attributs ist ganz einfach. Wenn das Dokument erstellt oder geladen wird, wird sein Wert auf False gesetzt. Sobald das Dokument dann geändert wird (durch Programmierung oder Benutzeraktion), ändert sich der Wert automatisch auf True.

So wird es einfach, die richtigen Entscheidungen zu treffen 🙂

  • Aktualisieren Sie die Schnittstelle
	OBJECT SET ENABLED(*; "btnSave";WParea.modified) // true or false
  • Bestätigen Sie das Speichern
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 

Egal, ob ein Leerzeichen gelöscht oder ein Komma hinzugefügt wird, ein einzelnes Zeichen fett oder kursiv gesetzt wird, das document.modified wird auf True gesetzt. Auch im Falle einer Rückgängigmachung bleibt das document.modified auf True.

Es ist jedoch möglich, den Wert dieses Attributs durch Programmierung zu erzwingen, z. B. nachdem das Dokument gespeichert wurde.

If (WParea.modified)
	// save document
	// (…)
	// then set the status to false
	WParea.modified:=False  // will stay false until next document modification
End if 

… ODER NICHT GEÄNDERT?

Einige Aktionen können nur das Erscheinungsbild der Dokumente ändern, ohne den Inhalt des Dokuments zu verändern; dies sind die Ansichtseigenschaften.

Sie können den Zoomfaktor ändern, die horizontalen und vertikalen Lineale ein- oder ausblenden, unsichtbare Zeichen, Formeln, Kopf- oder Fußzeilen einblenden, usw. Nichts von alledem wird gespeichert. Das bedeutet, dass das Dokument nicht verändert wird und daher das Attribut document.modified bleibt False. Siehe die Dokumentation über dieses neue Attribut.

Schlussfolgerung

Diese neue und unkomplizierte Eigenschaft erkennt schnell Änderungen in einem Dokument und führt entsprechende Aktionen durch. Entweder transparent (z. B. automatisches Speichern, wenn ein Dokument geöffnet bleibt) oder mit intelligenter Anpassung der Oberfläche an die jeweiligen Umstände!

Roland Lannuzel
- Product Owner & 4D Experte - Nach seinem Studium der Elektronik arbeitete Roland als Entwickler und Berater in der industriellen IT-Branche, wo er Lösungen für Kunden mit einer Vielzahl von Datenbanken und Technologien entwickelte. In den späten 80er Jahren verliebte er sich in 4D und setzte es bei der Entwicklung von Geschäftsanwendungen wie Buchhaltungs-, Abrechnungs- und E-Mail-Systemen ein. 1997 trat er schließlich in das Unternehmen ein und leistete einen wertvollen Beitrag, indem er Spezifikationen, Testtools und Demos entwarf, Schulungen durchführte und auf vielen Konferenzen für die 4D Community sprach. Er gestaltet die Zukunft von 4D aktiv mit, indem er neue Funktionen und Datenbankentwicklungstools definiert.