Back to Devexpress

How to Insert a Floating Text Box

vcl-176003-expressricheditcontrol-how-to-insert-a-floating-text-box.md

latest4.8 KB
Original Source

How to Insert a Floating Text Box

  • Dec 28, 2020
  • 3 minutes to read

This topic explains how to create a floating text box and customize its settings programmatically. A text box is a fully functional subdocument hosted within a floating shape.

You can manage, position and customize text floating boxes within a rich text document via the Rich Edit control’s public API that provides the InsertTextBox function, available both at the document and subdocument levels. The function creates and anchors an empty floating text box to the beginning of the page that includes the specified document position.

Refer to the following code example:

delphi
uses
..., dxCoreGraphics, cxGeometry; // Add these units to the uses clause...
//...
var
  ADocument: IdxRichEditDocument;
  ATextBoxShape: IdxRichEditShape;
  ATextBoxSubDocument: IdxRichEditSubDocument;
begin
  ADocument := dxRichEditControl1.Document;
  ADocument.&Unit := TdxRichEditDocumentUnit.Point; // Sets the measurement unit used to specify positions and sizes within the document
  ATextBoxShape := ADocument.InsertTextBox(ADocument.CreatePosition(0)); // Creates a new empty text box
  ATextBoxSubDocument := ATextBoxShape.TextBox.Document;
// Adds text to the text box
  ATextBoxSubDocument.AppendText('Lorem ipsum dolor sit amet, eu cum consul ignota. ');
  ATextBoxSubDocument.AppendText('Ea purto ubique voluptua nam, ea malorum definebas assueverit mel. ');
  ATextBoxSubDocument.AppendText('Qui ea alia mutat petentium ius latine oblique conclusionemque ne.');
  ATextBoxShape.TextWrapping := TdxRichEditTextWrappingType.Square; // Anchors the floating text box to the document's text layer and wraps text around all sides of the floating box's bounding rectangle
  ATextBoxShape.HorizontalAlignment := TdxRichEditShapeHorizontalAlignment.Center;
  ATextBoxShape.Offset := TdxPointF.Create(0, 200);
  ATextBoxShape.RotationAngle := 45;
// Sets the floating shape's appearance settings
  ATextBoxShape.Line.Thickness := 1;
  ATextBoxShape.Line.Color := TdxAlphaColors.Black;
  ATextBoxShape.Fill.Color := TdxAlphaColors.Bisque;
// Sets the margins between the text box's bounding rectangle and the parent document's text
  ATextBoxShape.MarginBottom := 10;
  ATextBoxShape.MarginLeft := 10;
  ATextBoxShape.MarginRight := 10;
  ATextBoxShape.MarginTop := 10;
end;
cpp
_di_IdxRichDocument ADocument;
  _di_IdxRichEditShape ATextBoxShape;
  _di_IdxRichEditSubDocument ATextBoxSubDocument;
//...
  ADocument = dxRichEditControl1->Document;
  ADocument->Unit = TdxRichEditDocumentUnit::Point; // Sets the measurement unit used to specify positions and sizes within the document
  ATextBoxShape = ADocument->InsertTextBox(ADocument->CreatePosition(0)); // Creates an empty text box
  ATextBoxSubDocument = ATextBoxShape->TextBox->Document;
// Adds text to the text box
  ATextBoxSubDocument->AppendText("Lorem ipsum dolor sit amet, eu cum consul ingota. ");
  ATextBoxSubDocument->AppendText("Ea purto ubique voluptua nam, ea malorum definebas assueverit mel. ");
  ATextBoxSubDocument->AppendText("Qui ea alia mutat petentium, ius latine oblique conclusionemque ne.");
  ATextBoxShape->TextWrapping = TdxRichEditTextWrappingType::Square; // Anchors the floating text box to the document's text layer and wraps text around all sides of the floating box's bounding rectangle
  ATextBoxShape->HorizontalAlignment = TdxRichEditShapeHorizontalAlignment::Center;
  ATextBoxShape->RotationAngle = 45;
// Sets the floating shape's appearance settings
  ATextBoxShape->Line->Thickness = 1;
  ATextBoxShape->Line->Color = TdxAlphaColors::Black;
  ATextBoxShape->Fill->Color = TdxAlphaColors::Bisque;
// Sets the margins between the text box's bounding rectangle and the parent document's text
  ATextBoxShape->MarginBottom = 10;
  ATextBoxShape->MarginLeft = 10;
  ATextBoxShape->MarginRight = 10;
  ATextBoxShape->MarginTop = 10;

Alternatively, you can insert text boxes by calling the document’s Shapes.InsertTextBox function.