Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Строчки разного цвета в TMemo


Piero ©   (2006-05-19 15:43:00) 

Как сделать строчки разного цвета в TMemo? если не возможно, какой компонент мне подойдет для этого, больше ничего особенного не нужно. спасибо.


Piero   (2006-05-19 19:10:00) [1]

спасибо


MBo   (2006-05-19 17:54:00) [2]

В справке написано, что Selstart, Selattributes


Piero   (2006-05-19 17:52:00) [3]


> MBo ©   (19.05.06 17:36) [5]
>
> TRichEdit


и как подсвечивать строки в TRichEdit


MBo   (2006-05-19 17:36:00) [4]

TRichEdit


Piero   (2006-05-19 17:25:00) [5]

я сто раз видел в программах такой memo, логи так подсвечивают и т.д., наверняка у кого-то есть


Tonich   (2006-05-19 16:54:00) [6]

а ты что хотел что бы тебе может еще и код в исходник вставили и скомпилили?


Piero   (2006-05-19 16:36:00) [7]

не совсем подходит - это раскрашивает - строки через одну разным цветом


Loginov Dmitry   (2006-05-19 16:06:00) [8]

Вот код из Кулибы:

  unit Todrmemo;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;

type
TOwnerDrawMemo = class(TMemo)
private
{ Private declarations }
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
end;

procedure Register;

implementation

procedure TOwnerDrawMemo.WMPaint(var Message: 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) do
begin
if 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;
finally
if Message.DC = 0 then EndPaint(Handle, PS);
end;
end;

procedure Register;
begin
RegisterComponents('Dr.Bob', [TOwnerDrawMemo]);
end;

end.


Наверх

Титульная страница Поиск, карта сайта Написать письмо