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

Как настроить фон с изображением при печати текста из TRichEdit в Delphi

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

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

Проблема

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

Решение

Как было отмечено в комментариях, для решения проблемы можно использовать цвет каждого отдельного символа, но это не позволит установить фон для всего блока текста. Для печати текста с фоном можно создать прямоугольник заданного цвета и наложить на него текст, выводя его прозрачно.

var
  size : TSize;
  Range: TFormatRange;
  Rect: TRect;
  LogX, LogY : Integer;
  bm : TBitmap;
  aCanvas : TCanvas;
  ExStyle: DWord;
begin
  aCanvas:=Printer.Canvas;
  // Настройка параметров для Range
  // ...
  myrichedit.Perform(EM_FORMATRANGE, 0, Longint(@Range)); // Измерение отформатированного текста
  Rect:=Range.rc;
  Rect.Left:=Range.rc.Left * LogX div 1440;
  Rect.Top:=Range.rc.Top * LogY div 1440;
  Rect.Right:=Range.rc.Right * LogX div 1440;
  Rect.Bottom:=Range.rc.Bottom * LogY div 1440;
  aCanvas.Brush.Color:=myBlockColor; // Задаем цвет фона
  aCanvas.FillRect(Rect); // Заливка фонового прямоугольника
  // Включаем прозрачность для TRichEdit, чтобы наложить текст на фон
  ExStyle := GetWindowLong(myRichEdit.Handle, GWL_EXSTYLE);
  ExStyle := ExStyle or WS_EX_TRANSPARENT;
  SetWindowLong(myRichEdit.Handle, GWL_EXSTYLE, ExStyle);
  myRichEdit.Perform(EM_FORMATRANGE, 1, Longint(@Range)); // Вывод отформатированного текста
  // Не забудьте восстановить предыдущие настройки WS_EX_TRANSPARENT после печати
end;

Важные моменты

  • Необходимо помнить, что изменение стиля окна WS_EX_TRANSPARENT может привести к непредсказуемому поведению компонента TRichEdit, поэтому после выполнения печати следует восстановить исходное значение этого стиля.
  • Приведенный код является примером хакерского решения и может потребовать дополнительной настройки в зависимости от конкретной ситуации использования.

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

Создано по материалам из источника по ссылке.

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


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 09:04:13/0.0051479339599609/1