// 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;
Код, который я предоставил, демонстрирует использование верхних и нижних индексов в контроле RichEdit в Delphi. Он использует структуру TCharFormat для настройки форматирования символов, включая смещение (yOffset), которое может быть положительным или отрицательным для достижения эффекта надстрочного или подстрочного текста.
Вот разбивка кода:
Процедура Button1Click устанавливает флаг маски CFM_OFFSET в структуре TCharFormat и specifies offset value of 70, что означает, что текст будет смещен на 70 twips (единица измерения, используемая RichEdit) от базовой линии.
Сообщение EM_SETCHARFORMAT отправляется в контрол RichEdit с флагом SCF_SELECTION, который применяет форматирование к текущей выборке.
Альтернативное решение, предоставленное, использует отдельную процедуру RE_SetCharFormat, которая принимает два параметра: RichEdit и CharacterFormat. Эта процедура устанавливает значение yOffset в зависимости от формата символов (надстрочный, подстрочный или нормальный) с помощью оператора switch. Результативное смещение затем применяется к контролу RichEdit с помощью сообщения EM_SETCHARFORMAT с флагом SCF_SELECTION.
Примеры, предоставленные, демонстрируют, как применять эффекты надстрочного и подстрочного текста к текущей выборке в контроле RichEdit, вызывая процедуру RE_SetCharFormat с соответствующим значением формата символов (CFM_Superscript или CFM_Subscript).
В целом, этот код предоставляет способ использования верхних и нижних индексов (надстрочного и подстрочного) в контроле RichEdit в Delphi, позволяя иметь точный контроль над форматированием текста.
В статье описывается использование верхних и нижних индексов в RichEdit-компоненте Delphi, а также примеры кода на языке Pascal для установки форматирования текста с помощью свойств yOffset и SCF_SELECTION.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.