Программисты Майкрософт ворвались в Apple и ставят на все компютеры Винды. Посреди этого всего стоит Билли в чёрной рясе с капюшоном и здоровенным крестом с логотипом W95. И подбегают к нему программисты и спрашивают:
- Отче, как отличить поганый Мак от честного писюка?
Мрачно усмехнулся Билли и сказал:
- Ставьте на всех!!! Виндоуз узнает своих!!!
Кто-нибудь знает как использовать различные шрифты и стили в
Memo-объекте?
Просто создайте собственный TxxxMemo: наследуйтесь от стандартного TMemo и
перекройте метод Paint.
Вот мой старый пример, изменяющий цвет каждой строки:
unit Todrmemo;
interfaceuses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TOwnerDrawMemo = class(TMemo)
private{ Private declarations }procedure WMPaint(varMessage: TWMPaint); message WM_PAINT;
protected{ Protected declarations }public{ Public declarations }published{ Published declarations }end;
procedureRegister;
implementationprocedure TOwnerDrawMemo.WMPaint(varMessage: TWMPaint);
var
Buffer: array[0..255] of Char;
PS: TPaintStruct;
DC: HDC;
i: Integer;
X, Y, Z: Word;
OldColor: LongInt;
begin
DC := Message.DC;
if DC = 0 then
DC := BeginPaint(Handle, PS);
try
X := 1;
Y := 1;
SetBkColor(DC, Color);
SetBkMode(DC, Transparent);
OldColor := Font.Color;
for i := 0 to Pred(Lines.Count) dobeginif odd(i) then
SetTextColor(DC, clRed)
else
SetTextColor(DC, OldColor);
Z := Length(Lines[i]);
StrPCopy(Buffer, Lines[i]);
Buffer[Z] := #0; { реально не нужно }
TextOut(DC, X, Y, Buffer, Z);
Inc(Y, abs(Font.Height));
end;
finallyifMessage.DC = 0 then
EndPaint(Handle, PS);
end;
end;
procedureRegister;
begin
RegisterComponents('Dr.Bob', [TOwnerDrawMemo]);
end;
end.
В статье описывается создание собственного Memo-объекта с использованием различных шрифтов и стилей, а также пример реализации метода Paint для изменения цвета каждой строки в Memo-компоненте.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.