Как нарисовать что-нибудь на TMemo?

Previous  Top  Next

    
 

 

Для рисования на поверхности TMemo необходимо создать создать собственный компонент, наследованный от TMemo и переопределить в нём рисование. Примерно так:

Code:

type

TMyMemo = class(TMemo)

protected

   procedure WMPaint(var Message: TWMPaint); message WM_PAINT;

end;

 

А теперь добавьте реализацию этой процедуры:

Code:

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.

Code:

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.

©Drkb::00554

Взято из http://forum.sources.ru