Use Subscript or Superscript in a TRichEdit

Author: Thomas Stutz 

 

// yOffset values

type

  TCharacterFormat = (CFM_Superscript, CFM_Subscript, CFM_Normal);

 

procedure RE_SetCharFormat(RichEdit: TRichEdit; CharacterFormat: TCharacterFormat);

var

  // The CHARFORMAT structure contains information about

  // character formatting in a rich edit control.

  Format: TCharFormat;

begin

  FillChar(Format, SizeOf(Format), 0);

  with Format do

  begin

    cbSize := SizeOf(Format);

    dwMask := CFM_OFFSET;

    // Character offset, in twips, from the baseline.

    // If the value of this member is positive,

    // the character is a superscript;

    // if it is negative, the character is a subscript.

    case CharacterFormat of

      CFM_Superscript: yOffset := 60;

      CFM_Subscript: yOffset := -60;

      CFM_Normal: yOffset := 0;

    end;

  end;

  // The EM_SETCHARFORMAT message sets character formatting in a rich edit control.

  // SCF_SELECTION: Applies the formatting to the current selection

  Richedit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));

end;

 

// Examples:

// Beispiele:

 

// Apply Superscript to the current selection

// Markierte Zeichen hoch stellen

procedure TForm1.Button1Click(Sender: TObject);

begin

  RE_SetCharFormat(RichEdit1, CFM_Superscript);

end;

 

// Apply Subscript to the current selection

// Markierte Zeichen tief stellen

procedure TForm1.Button2Click(Sender: TObject);

begin

  RE_SetCharFormat(RichEdit1, CFM_Subscript);

end;