
25.12.2009, 23:45
|
|
Участник форума
Регистрация: 13.11.2008
Сообщений: 131
Провел на форуме: 776255
Репутация:
52
|
|
Пытаюсь поместить в компонент код, меняющий цвет текста:
Код:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with Control as TListBox do
begin
Canvas.FillRect(Rect);
Canvas.Font.Color := TColor(clGreen);
Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]);
end;
end;
В компоненте у меня он выглядит так:
Код:
unit MyListBox;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TMyListBox = class(TListBox)
private
{ Private declarations }
FColorText:boolean;
FCanvas: TControlCanvas;
procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
protected
{ Protected declarations }
procedure setColorText(value:boolean);
public
{ Public declarations }
constructor Create (AOwner:TComponent); override;
published
{ Published declarations }
property ColorText: boolean read FColorText write setColorText default false;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TMyListBox]);
end;
constructor TMyListBox.Create (AOwner:TComponent);
begin
Inherited Create(AOwner);
FColorText:=false;
FCanvas:=TControlCanvas.Create;
FCanvas.Control:=Self;
end;
procedure TMyListBox.setColorText (value:boolean);
begin
with FCanvas.Control as TListBox do
begin
Canvas.FillRect(Rect);
Canvas.Font.Color := TColor(clGreen);
Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]);
end;
end;
end.
Работать это дело не хочет, судя по всему, нужно применить где-то ListBox1DrawItem, а как это сделать, ума не приложу..Хелпаните, кто с таким сталкивался.
|
|
|