В статье рассматривается проблема изменения шрифта для нетекстовых символов в компоненте TRichEdit в среде Delphi XE на операционной системе Windows 7. Основываясь на предоставленном контексте, статья будет содержать решение этой проблемы и примеры кода на языке Object Pascal, который используется в Delphi.
Основные шаги решения проблемы:
Использование версии RichEdit не ниже 4.1.
Сброс кода символа (charset) для нетекстовых символов перед изменением шрифта.
Пример процедуры изменения шрифта в TRichEdit.
Пример кода:
procedure TMainForm.ButtonFontClick(Sender: TObject);
var
format: TCharFormat2;
begin
if dlgFontCdxTxt.Execute then
begin
// Сброс кода символа для нетекстовых символов
FillChar(format, sizeof(format), 0);
format.cbSize := SizeOf(format);
format.dwMask := CFM_CHARSET;
format.bCharSet := 1; // или 0; в зависимости от нужного кодирования
redtTextBlock.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Integer(@format));
// Установка шрифта для выделенного текста
FillChar(format, sizeof(format), 0);
format.cbSize := SizeOf(format);
format.dwMask := CFM_FACE;
StrPLCopy(format.szFaceName, dlgFontCdxTxt.Font.Name, High(format.szFaceName));
redtTextBlock.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Integer(@format));
end;
redtTextBlock.SetFocus;
end;
Дополнительные сведения:
В Windows 2000 SP4 или XP SP2 изменение шрифта для нетекстовых символов в WordPad невозможно, так как они используют старые версии RichEdit.
В Windows 7 SP1 и выше, после изменения шрифта на "Arial Unicode MS", можно выбрать любой другой шрифт для нетекстовых символов.
Компонент TRichEdit в Delphi XE на Windows 7 может открывать и корректно отображать документы WordPad, созданные в Windows 7, но без возможности изменить шрифт для нетекстовых символов на другие, кроме "Arial Unicode MS".
Заключение:
Для изменения шрифта нетекстовых символов в TRichEdit в Delphi XE на Windows 7 необходимо сначала сбросить код символа и затем установить нужный шрифт. Важно использовать версию RichEdit не ниже 4.1 для достижения желаемого результата. Предоставленный пример кода демонстрирует, как это можно сделать.
В статье рассматривается проблема изменения шрифта для нетекстовых символов в компоненте `TRichEdit` в среде Delphi XE на операционной системе Windows 7, с предоставлением решения и примеров кода на Object Pascal для достижения этой цели.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.