Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как использовать верхние и нижние индексы?

01.01.2007

RichEdit поддерживает верхние/нижние индексы;

Вот как это делается:

uses RichEdit;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  CF: TCharFormat;
begin
  cf.cbSize := sizeof(cf);
  cf.dwMask := CFM_OFFSET;
  cf.yOffset := 70; // смещение по y; положительное/отрицательное для смещение верх/вниз
  RichEdit1.Perform(EM_SETCHARFORMAT, SCF_SELECTION, integer(@cf));
end;

SCF_ALL применить ко всему тексту

SCF_SELECTION применить к веделенному тексту

SCF_WORD | SCF_SELECTION применить к выделенным словам

Взято из MSDN. Проверено на Delphi7. Это работает. Попробый сделать сам, чтобы верхние/нижние индексы имели меньший размер.

Тем более это работает в rxRichEdit.

Автор: Seti

Взято с Vingrad.ru https://forum.vingrad.ru


// 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;

Взято с сайта: https://www.swissdelphicenter.ch