| 
 Как нарисовать что-нибудь на TMemoДля рисования на поверхности TMemo необходимо
    создать создать собственный компонент,
    наследованный от TMemo и переопределить в нём
    рисование. Примерно так:
 type
 TMyMemo = class(TMemo)
 protected
 procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
 end;
 
 А теперь добавьте реализацию этой процедуры:
 
 procedure TMyMemo.WMPaint(var Message: TWMPaint);
 var
 MCanvas: TControlCanvas;
 DrawBounds : TRect;
 Begin
 inherited;
 MCanvas:=TControlCanvas.Create;
 DrawBounds := ClientRect;  // Работаем с временной
    записью TRect.
 Try
 MCanvas.Control:=Self;
 With MCanvas do
 Begin
 Brush.Color := clBtnFace;
 FrameRect( DrawBounds );
 InflateRect( DrawBounds, -1, -1);
 FrameRect( DrawBounds );
 FillRect ( DrawBounds );
 MoveTo ( 33, 0 );
 Brush.Color := clWhite;
 LineTo ( 33, ClientHeight );
 PaintImages;
 end;
 finally
 MCanvas.Free;
 End;
 end;
 
 Процедура PaintImages рисует картинки на канвасе Memo.
 
 procedure TMyMemo.PaintImages;
 var
 MCanvas: TControlCanvas;
 DrawBounds : TRect;
 i, j : Integer;
 OriginalRegion : HRGN;
 ControlDC : HDC;
 begin
 MCanvas:=TControlCanvas.Create;
 DrawBounds := ClientRect;  // Работаем с временной
    записью TRect.
 try
 MCanvas.Control:=Self;
 ControlDC := GetDC ( Handle );
 MCanvas.Draw(0, 1, Application.Icon);
 finally
 MCanvas.Free;
 end;
 end;
 
 Теперь мы имеем собственноручно нарисованный memo.
 
     |