|
Опять-таки... составляю тут резюме... первым делом, есессно, натыкаюсь на пункт "ФИО" и пытаюсь ввести свой ник... затем все же заставляю себя заполнить данный пункт, несколько ошалело глядя на собственные _реальные_ фамилию и имя... настолько привыкнув за время пребывания в Сети к осторожности скрытности, что в первый момент жутко ругаю себя, что что ж это я так уже себя не контролирую... При достижении пунта "e-mail" и не менее послушном заполнении ужас просто-таки начинает раздирать - как - я - оставляю свое мыло... недремлющий спаммер... через некоторое время все-таки приходит осознание ситуации и понимание необходимости ввести свой пол и возраст, а также телефон :))), ...который чудом не был заменен номером Аськи...
|
Для рисования на поверхности 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;
// Работаем с временной записью TRect.
DrawBounds := ClientRect;
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;
// Работаем с временной записью TRect.
DrawBounds := ClientRect;
try
MCanvas.Control:=Self;
ControlDC := GetDC(Handle);
MCanvas.Draw(0, 1, Application.Icon);
finally
MCanvas.Free;
end;
end;
|
Теперь мы имеем собственноручно нарисованный memo.
|