Leadtools.Annotations Requires Document/Medical product license | Send comments on this topic. | Back to Introduction - All Topics | Help Version 15.10.31
CanGroup Property
See Also  Example
Leadtools.Annotations Namespace > AnnAutomation Class : CanGroup Property




Gets a value indicating whether this AnnAutomation is in a state where objects can be grouped together.

Syntax

Visual Basic (Declaration) 
Public Overridable ReadOnly Property CanGroup As Boolean
Visual Basic (Usage)Copy Code
Dim instance As AnnAutomation
Dim value As Boolean
 
value = instance.CanGroup
C# 
public virtual bool CanGroup {get;}
Managed Extensions for C++ 
public: __property virtual bool get_CanGroup();
C++/CLI 
public:
virtual property bool CanGroup {
   bool get();
}

Return Value

true if this AnnAutomation is in a state where objects can be grouped together; false otherwise.

Example

This example will add two objects into the automation and then group them together.

Visual BasicCopy Code
Public Sub AnnAutomation_CanGroup(ByVal automation As AnnAutomation)
   ShowStatus(automation)
   ' first, add two objects to the automation
   Dim rectObj As AnnRectangleObject = New AnnRectangleObject()
   rectObj.Bounds = New AnnRectangle(100, 100, 100, 100, AnnUnit.Pixel)
   rectObj.Pen = New AnnPen(Color.Blue, New AnnLength(1, AnnUnit.Pixel))
   rectObj.Brush = Nothing
   automation.Container.Objects.Add(rectObj)
   automation.Viewer.Invalidate(rectObj.InvalidRectangle)
   ShowStatus(automation)

   Dim lineObj As AnnLineObject = New AnnLineObject()
   lineObj.StartPoint = New AnnPoint(100, 100, AnnUnit.Pixel)
   lineObj.EndPoint = New AnnPoint(200, 200, AnnUnit.Pixel)
   lineObj.Pen = New AnnPen(Color.Red, New AnnLength(1, AnnUnit.Pixel))
   automation.Container.Objects.Add(lineObj)
   automation.Viewer.Invalidate(lineObj.InvalidRectangle)
   ShowStatus(automation)

   ' "select" both objects
   automation.StartEditing(rectObj, False)
   ShowStatus(automation)

   automation.StartEditing(lineObj, True)
   ShowStatus(automation)

   ' make this group object a true group
   If automation.CanGroup Then
      automation.Group()
      ShowStatus(automation)
   End If

   ' ungroup to again to the origina 2 objects
   If automation.CanUngroup Then
      automation.Ungroup()
      ShowStatus(automation)
   End If
End Sub

Private Sub ShowStatus(ByVal automation As AnnAutomation)
   Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder()
   sb.Append("Number of objects: ")
   sb.Append(automation.Container.Objects.Count)
   sb.Append(Environment.NewLine)

   sb.Append("Object currently being edited: ")
   If Not automation.CurrentEditObject Is Nothing Then
      sb.Append(automation.CurrentEditObject.GetType().Name)
      If TypeOf automation.CurrentEditObject Is AnnGroupObject Then
         sb.Append(", Temporary: ")
         Dim group As AnnGroupObject = CType(IIf(TypeOf automation.CurrentEditObject Is AnnGroupObject, automation.CurrentEditObject, Nothing), AnnGroupObject)
         sb.Append(group.Temporary)
      End If
   Else
      sb.Append("None")
   End If

   sb.Append(Environment.NewLine)

   sb.Append("CanGroup: ")
   sb.Append(automation.CanGroup)
   sb.Append(", CanUngroup: ")
   sb.Append(automation.CanUngroup)

   MessageBox.Show(sb.ToString())
End Sub
C#Copy Code
public void AnnAutomation_CanGroup(AnnAutomation automation) 

   ShowStatus(automation); 
   // first, add two objects to the automation 
   AnnRectangleObject rectObj = new AnnRectangleObject(); 
   rectObj.Bounds = new AnnRectangle(100, 100, 100, 100, AnnUnit.Pixel); 
   rectObj.Pen = new AnnPen(Color.Blue, new AnnLength(1, AnnUnit.Pixel)); 
   rectObj.Brush = null; 
   automation.Container.Objects.Add(rectObj); 
   automation.Viewer.Invalidate(rectObj.InvalidRectangle); 
   ShowStatus(automation); 
 
   AnnLineObject lineObj = new AnnLineObject(); 
   lineObj.StartPoint = new AnnPoint(100, 100, AnnUnit.Pixel); 
   lineObj.EndPoint = new AnnPoint(200, 200, AnnUnit.Pixel); 
   lineObj.Pen = new AnnPen(Color.Red, new AnnLength(1, AnnUnit.Pixel)); 
   automation.Container.Objects.Add(lineObj); 
   automation.Viewer.Invalidate(lineObj.InvalidRectangle); 
   ShowStatus(automation); 
 
   // "select" both objects 
   automation.StartEditing(rectObj, false); 
   ShowStatus(automation); 
 
   automation.StartEditing(lineObj, true); 
   ShowStatus(automation); 
 
   // make this group object a true group 
   if(automation.CanGroup) 
   { 
      automation.Group(); 
      ShowStatus(automation); 
   } 
 
   // ungroup to again to the origina 2 objects 
   if(automation.CanUngroup) 
   { 
      automation.Ungroup(); 
      ShowStatus(automation); 
   } 

 
private void ShowStatus(AnnAutomation automation) 

   System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
   sb.Append("Number of objects: "); 
   sb.Append(automation.Container.Objects.Count); 
   sb.Append(Environment.NewLine); 
 
   sb.Append("Object currently being edited: "); 
   if(automation.CurrentEditObject != null) 
   { 
      sb.Append(automation.CurrentEditObject.GetType().Name); 
      if(automation.CurrentEditObject is AnnGroupObject) 
      { 
         sb.Append(", Temporary: "); 
         AnnGroupObject group = automation.CurrentEditObject as AnnGroupObject; 
         sb.Append(group.Temporary); 
      } 
   } 
   else 
      sb.Append("None"); 
 
   sb.Append(Environment.NewLine); 
 
   sb.Append("CanGroup: "); 
   sb.Append(automation.CanGroup); 
   sb.Append(", CanUngroup: "); 
   sb.Append(automation.CanUngroup); 
 
   MessageBox.Show(sb.ToString()); 
}

Remarks

(Read only) The AnnAutomation is in a state where objects can be grouped together when 2 or more objects are in an edit state.

Call the Group method to group the objects currently being edited together.

Note, when you select one or more objects in this AnnAutomation through the user interface, an AnnGroupObject will be created and the selected objects are moved from the Container to this AnnGroupObject. This AnnGroupObject is a temporary group and will be ungrouped (by calling Ungroup) and added back to the Container when the objects are not selected anymore (for example, by clicking somewhere in the container outside the group or by calling the user interface or by calling SelectNone). To check if the current editing object is the temporary group, first check if the CurrentEditObject is an AnnGroupObject, then check if the Temporary value is set to true.

For more information about grouping and ungrouping, refer to Grouping and Ungrouping Annotation Objects.

Requirements

Target Platforms: Microsoft .NET Framework 2.0, Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also

Leadtools.Annotations requires a Document or Medical toolkit license and unlock key. For more information, refer to: Raster Pro/Document/Medical Features