Как использовать верхние и нижние индексы?
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.
Взято с 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