Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.25;
Скачать: CL | DM;

Вниз

Фоновый рисунок в Memo   Найти похожие ветки 

 
_makSim   (2005-08-29 18:38) [0]

Подскажите как можно сделать фоновый рисунок в компоненте Memo, как это, например, может иметь место в окне ввода в ICQ. Спасибо.


 
DVM ©   (2005-08-30 17:18) [1]


> Подскажите как можно сделать фоновый рисунок в компоненте
> Memo

обрабатывать WM_ERASEBKGND


 
Турист   (2005-08-30 22:52) [2]

Как-то много кода получилось



const
 WM_REDRAW = WM_USER + 100;

type
 TMyMemo = class(TMemo)
 protected
    procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
    procedure CNCtlColorEdit(var Message: TWMCtlColorEdit); message CN_CTLCOLOREDIT;
    procedure WMEraseBkgnd(var Message: TMessage); message WM_ERASEBKGND;
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
    procedure WMRedraw(var Message: TMessage); message WM_REDRAW;
  end;

 TMemo = class(TMyMemo);

 TForm1 = class(TForm)
   Memo1: TMemo;
   Image1: TImage;
   XPManifest1: TXPManifest;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TMyMemo.CNCommand(var Message: TWMCommand);
begin
 case Message.NotifyCode of
   EN_UPDATE: Invalidate;
   EN_VSCROLL, EN_HSCROLL:
     begin
       SendMessage(Handle, WM_SETREDRAW, 0, 0);
       PostMessage(Handle, WM_REDRAW, 0, 0);
     end;
 else
   inherited
 end
end;

procedure TMyMemo.CNCtlColorEdit(var Message: TWMCtlColorEdit);
begin
 inherited;
 SetBkMode(Message.ChildDC, TRANSPARENT)
end;

procedure TMyMemo.WMEraseBkgnd(var Message: TMessage);
begin
 Message.Result := 1
end;

procedure TMyMemo.WMPaint(var Message: TWMPaint);
var
 DC, TempDC: HDC;
 OldBmp: HBITMAP;
 PS: TPaintStruct;
 TempRect: TRect;
begin
 if Message.DC <> 0 then
   inherited
 else begin
   TempRect := ClientRect;
   BeginPaint (Handle, PS);
   DC       := GetDC(Handle);
   TempDC   := CreateCompatibleDC(DC);
   OldBmp   := SelectObject(TempDC, CreateCompatibleBitmap(DC, TempRect.Right, TempRect.Bottom));
   try
     FillRect(TempDC, ClientRect, Brush.Handle);
     Message.DC := TempDC;
     WMPaint(Message);
     Message.DC := 0;
     BitBlt(DC, 0, 0, TempRect.Right, TempRect.Bottom, TempDC, 0, 0, SRCCOPY);
   finally
     DeleteObject(SelectObject(TempDC, OldBmp))
   end;
   ReleaseDC (Handle, TempDC);
   ReleaseDC (Handle, DC);
   EndPaint (Handle, PS)
 end
end;

procedure TMyMemo.WMRedraw(var Message: TMessage);
begin
 SendMessage(Handle, WM_SETREDRAW, 1, 0);
 Invalidate
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Memo1.Brush.Bitmap := Image1.Picture.Bitmap;
end;



Страницы: 1 вся ветка

Текущий архив: 2005.09.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
1-1125952931
lauren
2005-09-06 00:42
2005.09.25
ComboBox &amp; razmer shrifta RichEdit


8-1115673129
Пикт
2005-05-10 01:12
2005.09.25
Как изменить яркость JPG-картикни ?


6-1117704753
Marabunt
2005-06-02 13:32
2005.09.25
Файл FTPDemo.dpr


1-1125550714
Goga
2005-09-01 08:58
2005.09.25
TStream


9-1116830673
Slavikk
2005-05-23 10:44
2005.09.25
GLScene - стрельба