Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Использовать SubScript или SuperScript в TRichEdit

Delphi , Компоненты и Классы , TMemo и TRichEdit

Использовать SubScript или SuperScript в TRichEdit

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

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

Программный код, предоставленный вами, написан на языке Delphi и использует компонент TRichEdit для применения форматирования верхнего индекса или нижнего индекса к текущей выборке.

Вот подробное описание того, что код делает:

  1. Тип TCharacterFormat определяет три возможные форматы символов: CFM_Superscript, CFM_Subscript и CFM_Normal.
  2. Процедура RE_SetCharFormat принимает два параметра: TRichEdit-контроль (RichEdit) и значение TCharacterFormat (CharacterFormat). Она устанавливает формат символов для текущей выборки в rich edit-контроле.
  3. Внутри RE_SetCharFormat создается структура TCharFormat и ее члены инициализируются. Член dwMask установлен в CFM_OFFSET, что указывает на то, что член yOffset должен быть использован.
  4. В зависимости от значения CharacterFormat член yOffset устанавливается в 60 (верхний индекс), -60 (низший индекс) или 0 (нормальный). Член yOffset представляет собой смещение в твиписах от базовой линии, поэтому положительные значения перемещают символ выше базовой линии (верхний индекс), а отрицательные значения перемещают его ниже базовой линии (низший индекс).
  5. Наконец, процедура вызывает сообщение EM_SETCHARFORMAT на rich edit-контроле для применения форматирования к текущей выборке.

Два примера процедур (Button1Click и Button2Click) демонстрируют, как использовать RE_SetCharFormat для применения верхнего индекса и низшего индекса к текущей выборке в TRichEdit-контроле соответственно.

Альтернативное решение:

Вместо использования члена yOffset для указания смещения от базовой линии можно использовать член dwEffects структуры TCharFormat. Это позволяет указать диапазон эффектов, включая верхний и низший индексы.

Вот пример модифицированного кода:

procedure RE_SetCharFormat(RichEdit: TRichEdit; CharacterFormat: TCharacterFormat);
var
  Format: TCharFormat;
begin
  FillChar(Format, SizeOf(Format), 0);
  with Format do
  begin
    cbSize := SizeOf(Format);
    dwMask := CFM_EFFECTS;
    case CharacterFormat of
      CFM_Superscript: dwEffects := CE_SUPER;
      CFM_Subscript: dwEffects := CE_SUBSCRIPT;
      CFM_Normal: dwEffects := 0;
    end;
  end;
  RichEdit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
end;

В этом модифицированном варианте член dwMask установлен в CFM_EFFECTS, а член dwEffects установлен в CE_SUPER (верхний индекс) или CE_SUBSCRIPT (низший индекс). Это позволяет использовать одну и ту же процедуру для применения как верхнего, так и низшего индекса.

В статье описывается способ использования подписей (subscript) и надписи (superscript) в компоненте TRichEdit Delphi, с помощью процедуры RE_SetCharFormat.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TMemo и TRichEdit ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-11-30 11:42:55
2024-12-11 01:03:13/0.0025508403778076/0