Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 847

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Мне необходимо использовать битмап в качестве фона (так что бы компонент не выделялся на форме, а выглядел так как будто текст печатается на самой форме) для reachedit или SynEdit, как это можно сделать?
Заранее спасибо.

VIRUS Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: VIRUS (статус: Посетитель)
Вопрос отправлен: 26 августа 2008, 20:02
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Feniks

Здравствуйте, VIRUS!
Возможно код в Приложении вам поможет или подскажет путь, в котором надо копать.

P.S. Желаю удачи.

Приложение:
  1. procedure RichEditToCanvas(RichEdit: TRichEdit; Canvas: TCanvas; PixelsPerInch: Integer);
  2. var
  3. ImageCanvas: TCanvas;
  4. fmt: TFormatRange;
  5. begin
  6. ImageCanvas := Canvas;
  7. with fmt do
  8. begin
  9. hdc:= ImageCanvas.Handle;
  10. hdcTarget:= hdc;
  11. // rect needs to be specified in twips (1/1440 inch) as unit
  12. rc:= Rect(0, 0,
  13. ImageCanvas.ClipRect.Right * 1440 div PixelsPerInch,
  14. ImageCanvas.ClipRect.Bottom * 1440 div PixelsPerInch
  15. );
  16. rcPage:= rc;
  17. chrg.cpMin := 0;
  18. chrg.cpMax := RichEdit.GetTextLen;
  19. end;
  20. SetBkMode(ImageCanvas.Handle, TRANSPARENT);
  21. RichEdit.Perform(EM_FORMATRANGE, 1, Integer(@fmt));
  22. // next call frees some cached data
  23. RichEdit.Perform(EM_FORMATRANGE, 0, 0);
  24. end;
  25.  
  26. procedure TForm1.Button1Click(Sender: TObject);
  27. begin
  28. RichEditToCanvas(RichEdit1, Image1.Canvas, Self.PixelsPerInch);
  29. Image1.Refresh;
  30. end;


Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 27 августа 2008, 11:01

Ответ #2. Отвечает эксперт: Паровоз

Здравствуйте, VIRUS! Попробуйте следующий код:
var
ws:integer;
bm:TBitmap;
begin
bm:=TBitmap.Create;
bm.LoadFromFile('..........');
RichEdit1.Brush.Bitmap:=bm;
ws:=GetWindowLong(RichEdit1.Handle, GWL_EXSTYLE);
ws:=ws or WS_EX_TRANSPARENT;
SetWindowLong(RichEdit1.Handle,GWL_EXSTYLE,ws);
end;

Ответ отправил: Паровоз (статус: 10-ый класс)
Время отправки: 27 августа 2008, 17:57


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 27 августа 2008, 00:00; участников в обсуждении: 1.
Вадим К

Вадим К (статус: Академик), 27 августа 2008, 00:00 [#1]:

если надо что бы RichEdit не выделялся из формы и форма одного цвета, то это очень просто сделать. надо выставить такие свойства
BorderStyle = bsNone
Color = clBtnFace

Теперь будет "заподлицо".
А вот фон установить в виде картинки и/или прозрачным сделать - в стандартном невозможно (или лучше написать сложно). Надо писать наследника или скачать готовые компоненты, которые уже имеют данную функциональность.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:01
Выполнено за 0.03 сек.