|
Вопрос # 1 847/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Мне необходимо использовать битмап в качестве фона (так что бы компонент не выделялся на форме, а выглядел так как будто текст печатается на самой форме) для reachedit или SynEdit, как это можно сделать?
Заранее спасибо.
 |
Вопрос задал: VIRUS (статус: Посетитель)
Вопрос отправлен: 26 августа 2008, 20:02
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Feniks
Здравствуйте, VIRUS!
Возможно код в Приложении вам поможет или подскажет путь, в котором надо копать.
P.S. Желаю удачи.
Приложение: Переключить в обычный режим- procedure RichEditToCanvas(RichEdit: TRichEdit; Canvas: TCanvas; PixelsPerInch: Integer);
- var
- ImageCanvas: TCanvas;
- fmt: TFormatRange;
- begin
- ImageCanvas := Canvas;
- with fmt do
- begin
- hdc:= ImageCanvas.Handle;
- hdcTarget:= hdc;
- // rect needs to be specified in twips (1/1440 inch) as unit
- rc:= Rect(0, 0,
- ImageCanvas.ClipRect.Right * 1440 div PixelsPerInch,
- ImageCanvas.ClipRect.Bottom * 1440 div PixelsPerInch
- );
- rcPage:= rc;
- chrg.cpMin := 0;
- chrg.cpMax := RichEdit.GetTextLen;
- end;
- SetBkMode(ImageCanvas.Handle, TRANSPARENT);
- RichEdit.Perform(EM_FORMATRANGE, 1, Integer(@fmt));
- // next call frees some cached data
- RichEdit.Perform(EM_FORMATRANGE, 0, 0);
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- RichEditToCanvas(RichEdit1, Image1.Canvas, Self.PixelsPerInch);
- Image1.Refresh;
- 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
Теперь будет "заподлицо".
А вот фон установить в виде картинки и/или прозрачным сделать - в стандартном невозможно (или лучше написать сложно). Надо писать наследника или скачать готовые компоненты, которые уже имеют данную функциональность.
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|