Leadtools.Annotations Namespace > AnnAutomation Class : ObjectsDirty Property |
public virtual bool ObjectsDirty {get; set;}
'Declaration Public Overridable Property ObjectsDirty As Boolean
'Usage Dim instance As AnnAutomation Dim value As Boolean instance.ObjectsDirty = value value = instance.ObjectsDirty
The objects in the automation can change in multiple ways: calling most of the methods of this AnnAutomation will usually change the objects. For example, calling the Flip or Delete methods will change this value. Adding new objects to this AnnAutomation will also set the value of this property to true as will deleting objects.
You should check the value of this property in your application and save the objects back to the annotation file if the value of this property is true. You should set the value of this property to false after you do so to indicate that the objects are up to date.
The BeforeObjectChanged event is fired before any object is about to change.
The AfterObjectChanged event is fired after any object has been changed. Internally, when the AnnAutomation sets the value of the ObjectsDirty property to true the AfterObjectChanged event fires.
The value of this property gets updated only when the objects are changed by calling one of the AnnAutomation methods or by the user interface. If you add or edit or delete objects manually through code (for example, by adding objects manually to the Container), the value of this property will not be updated. You need to set the value of the ObjectsDirty property to true manually as well in this case.
Imports Leadtools Imports Leadtools.Annotations Imports Leadtools.WinForms Imports Leadtools.Drawing Public Sub AnnAutomation_ObjectsDirty(ByVal automation As AnnAutomation) ' make sure no objects are selected and clear the object dirty flag automation.SelectNone() automation.ObjectsDirty = False ' test DirtyTest(automation) ' add a new object Dim rectObj As AnnRectangleObject = New AnnRectangleObject() rectObj.Bounds = New AnnRectangle(100, 100, 200, 200, AnnUnit.Pixel) rectObj.Pen = New AnnPen(Color.Blue, New AnnLength(2, AnnUnit.Pixel)) rectObj.Brush = New AnnSolidBrush(Color.Yellow) automation.Container.Objects.Add(rectObj) ' since we added the object manually, we need to update the ObjectsDirty property ourselves automation.ObjectsDirty = True automation.Viewer.Invalidate(rectObj.InvalidRectangle) automation.StartEditing(rectObj, False) ' test DirtyTest(automation) ' lock the object automation.Lock() ' test DirtyTest(automation) ' unlock automation.Unlock() ' test DirtyTest(automation) ' delete automation.Delete() ' test DirtyTest(automation) End Sub Private Sub DirtyTest(ByVal automation As AnnAutomation) ' see if the objects are dirty (changed) If automation.ObjectsDirty Then ' yes MessageBox.Show("Object(s) have been changed. We are going to clear the flag here") automation.ObjectsDirty = False Else MessageBox.Show("No object has been changed") End If End Sub
using Leadtools; using Leadtools.Annotations; using Leadtools.WinForms; using Leadtools.Drawing; public void AnnAutomation_ObjectsDirty(AnnAutomation automation) { // make sure no objects are selected and clear the object dirty flag automation.SelectNone(); automation.ObjectsDirty = false; // test DirtyTest(automation); // add a new object AnnRectangleObject rectObj = new AnnRectangleObject(); rectObj.Bounds = new AnnRectangle(100, 100, 200, 200, AnnUnit.Pixel); rectObj.Pen = new AnnPen(Color.Blue, new AnnLength(2, AnnUnit.Pixel)); rectObj.Brush = new AnnSolidBrush(Color.Yellow); automation.Container.Objects.Add(rectObj); // since we added the object manually, we need to update the ObjectsDirty property ourselves automation.ObjectsDirty = true; automation.Viewer.Invalidate(rectObj.InvalidRectangle); automation.StartEditing(rectObj, false); // test DirtyTest(automation); // lock the object automation.Lock(); // test DirtyTest(automation); // unlock automation.Unlock(); // test DirtyTest(automation); // delete automation.Delete(); // test DirtyTest(automation); } private void DirtyTest(AnnAutomation automation) { // see if the objects are dirty (changed) if(automation.ObjectsDirty) { // yes MessageBox.Show("Object(s) have been changed. We are going to clear the flag here"); automation.ObjectsDirty = false; } else MessageBox.Show("No object has been changed"); }