←Select platform

StartEditing Method

Summary

Starts editing the given AnnObject.

Syntax

C#
VB
C++
public virtual void StartEditing( 
   AnnObject annObject, 
   bool group 
) 
  
Public Overridable Sub StartEditing( _ 
   ByVal annObject As Leadtools.Annotations.AnnObject, _ 
   ByVal group As Boolean _ 
)  
public: 
virtual void StartEditing(  
   Leadtools.Annotations.AnnObject^ annObject, 
   bool group 
)  

Parameters

annObject
An existing AnnObject to edit.

group
true to group this annObject with the object(s) currently being edited if(any), otherwise; false.

Remarks

This method is called by the AnnAutomation object in design user mode whenever an object is "selected" (by clicking it with the mouse usually). You can manually start the editing process of an object by calling this method.

If you have object(s) that are currently being edited in this AnnAutomation and you want to either create a new group or add an annObject to the group currently being edited, then pass true for group; otherwise pass false. Passing true when no objects are currently being edited will not create a new group and edits this object individually as normal. Passing false when objects are currently being edited will cause the current editing operation to be canceled and start a new one for annObject.

Calling StartEditing with group set to true might create a temporary group if more than one object will be selected, this will cause objects to be removed from the container and added into this temporary group. For example, you have a container with 3 objects (a line, a rectangle and an ellipse) and currently nothing is selected in the automation. Now you make the following call:

automation.StartEditing(lineObject, true);

Since this is the first object to be selected, its edit designer will start. If you check automation.Container.Objects.Count it will still be 3. Next you make the following call:

automation.StartEditing(rectangleObject, true);

This will instruct the automation object to add the rectangle to the current selection. The automation will create a temporary group object, add it to the container and them remove the line and ellipse objects from the container and adds them to this new group. If you check automation.Container.Objects.Count it will be 2, the group and the ellipse object. Next you make the following call:

automation.StartEditing(ellipseObject, true);

This will instruct the automation object to add the ellipse to the current selection. The automation will remove the ellipse from the container and adds it to the group. If you check automation.Container.Objects.Count it will be 1, the group

With this information in mind, to select objects in an automation, you can either use SelectAll or use StartEditing with group set to true. However, you should not write code liks this:

foreach(AnnObject obj in automation.Container.Objects) 
  automation.StartEditing(obj, true); 

As noted before, StartEditing might cause objects to be added or removed into the Objects collection. And you should never iterate a collection that will change like that. Instead, to select all (or a group) of objects manually, first get the references to these objects into an array or collection and then iterate through that collection:

// Get a list of the objects to select, in this example, all of them 
AnnObject[] toSelectObjects = new AnnObject[automation.Container.Objects.Count]; 
automation.Container.Objects.CopyTo(toSelectObjects, 0); 
// Call StartEditing on all these objects 
foreach (AnnObject obj in toSelectObjects) 
   automation.StartEditing(obj, true); 

Example

This example will add a new rectangle object to the active automation of an automation manager. It will then "select" this object and make it ready for editing.

C#
VB
using Leadtools; 
using Leadtools.Annotations; 
using Leadtools.WinForms; 
using Leadtools.Drawing; 
 
public void AnnAutomation_StartEditing(AnnAutomationManager manager) 
{ 
   // find the active automation 
   AnnAutomation automation = null; 
   for (int index = 0; index < manager.Automations.Count && automation == null; index++) 
   { 
      if (manager.Automations[index].Active) 
         automation = manager.Automations[index]; 
   } 
 
   if (automation != null) 
   { 
      // add a new rectangle object to this automation 
      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); 
 
      // surround the changes to the automation by an undo 
      automation.BeginUndo(); 
 
      automation.Container.Objects.Add(rectObj); 
 
      // "select" this rectangle and make it ready for editing 
      automation.StartEditing(rectObj, false); 
 
      automation.EndUndo(); 
   } 
} 
Imports Leadtools 
Imports Leadtools.Annotations 
Imports Leadtools.WinForms 
Imports Leadtools.Drawing 
 
Public Sub AnnAutomation_StartEditing(ByVal manager As AnnAutomationManager) 
   ' find the active automation 
   Dim automation As AnnAutomation = Nothing 
   Dim index As Integer = 0 
   Do While index < manager.Automations.Count AndAlso automation Is Nothing 
      If manager.Automations(index).Active Then 
         automation = manager.Automations(index) 
      End If 
      index += 1 
   Loop 
 
   If Not automation Is Nothing Then 
      ' add a new rectangle object to this automation 
      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) 
 
      ' surround the changes to the automation by an undo 
      automation.BeginUndo() 
 
      automation.Container.Objects.Add(rectObj) 
 
      ' "select" this rectangle and make it ready for editing 
      automation.StartEditing(rectObj, False) 
 
      automation.EndUndo() 
   End If 
End Sub 

Requirements

Target Platforms

Help Version 19.0.2017.10.27
Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Annotations Assembly