ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Reports Namespace / ReportElementFactory Class / CreateFieldValueTextElement Method
IElementContainer
Envelope
CIMReportField
CIMTextSymbol
Example Version

CreateFieldValueTextElement Method (ReportElementFactory)
Creates a field value text element on a report from an envelope geometry. This method must be called on the MCT. Use QueuedTask.Run.
Syntax

Parameters

elementContainer
IElementContainer
envelope
Envelope
reportField
CIMReportField
textSymbol
CIMTextSymbol

Return Value

Returns a GraphicElement
Exceptions
ExceptionDescription
This method or property must be called within the lambda passed to QueuedTask.Run.
Invalid report section.
Invalid report.
Element extents outside section.
Failed to create text element.
Remarks
The element gets added to the group at the topmost position.
Example
Create a new field in the report
//This is the gap between two fields
double fieldIncrement = 0.9388875113593206276389;
//On the QueuedTask
//New field to add.
var newReportField = new CIMReportField
{
  Name = "POP1990",
  FieldOrder = 2,
};
//Get the "ReportSection element"                
var mainReportSection = report.Elements.OfType<ReportSection>().FirstOrDefault();
if (mainReportSection == null) return;

//Get the "ReportDetails" within the ReportSectionElement. ReportDetails is where "fields" are.
var reportDetailsSection = mainReportSection?.Elements.OfType<ReportDetails>().FirstOrDefault();
if (reportDetailsSection == null) return;

//Within ReportDetails find the envelope that encloses a field.
//We get the first CIMParagraphTextGraphic in the collection so that we can add the new field next to it.                    
var lastFieldGraphic = reportDetailsSection.Elements.FirstOrDefault((r) =>
{
  var gr = r as GraphicElement;
  if (gr == null) return false;
  return (gr.GetGraphic() is CIMParagraphTextGraphic ? true : false);
});
//Get the Envelope of the last field
var graphicBounds = lastFieldGraphic.GetBounds();

//Min and Max values of the envelope
var xMinOfFieldEnvelope = graphicBounds.XMin;
var yMinOfFieldEnvelope = graphicBounds.YMin;

var xMaxOfFieldEnvelope = graphicBounds.XMax;
var YMaxOfFieldEnvelope = graphicBounds.YMax;
//create the new Envelope to be offset from the existing field
//At 2.x
//MapPoint newMinPoint = MapPointBuilder.CreateMapPoint(xMinOfFieldEnvelope + fieldIncrement, yMinOfFieldEnvelope);
//MapPoint newMaxPoint = MapPointBuilder.CreateMapPoint(xMaxOfFieldEnvelope + fieldIncrement, YMaxOfFieldEnvelope);
//Envelope newFieldEnvelope = EnvelopeBuilder.CreateEnvelope(newMinPoint, newMaxPoint);

MapPoint newMinPoint = MapPointBuilderEx.CreateMapPoint(xMinOfFieldEnvelope + fieldIncrement, yMinOfFieldEnvelope);
MapPoint newMaxPoint = MapPointBuilderEx.CreateMapPoint(xMaxOfFieldEnvelope + fieldIncrement, YMaxOfFieldEnvelope);
Envelope newFieldEnvelope = EnvelopeBuilderEx.CreateEnvelope(newMinPoint, newMaxPoint);

//Create field
GraphicElement fieldGraphic = ReportElementFactory.Instance.CreateFieldValueTextElement(reportDetailsSection, newFieldEnvelope, newReportField);
Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also