Как же в TListBox добавить элемент своего цвета? Необходимо использовать событие onDrawItem.
ВНИМАНИЕ !!! Нужно поставить у TListBox свойство STYLE = lbOwnerDrawFixed иначе работать не будет.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
Edit1: TEdit;
procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
masColor:Array of TColor;// массив цветов
L:Integer=3;
implementation{$R *.dfm}
Procedure PaintMyListBox(LB:TListBox; Rect: TRect; Index:Integer);
begin
With LB.Canvas do
begin
FillRect(Rect);// Очищаем
LB.Canvas.Font.Color:=MasColor[Index];// установим цвет текста
TextOut(Rect.Left+2, Rect.Top+1, LB.Items[index]);// рисуем вручную
end;
end;// Новая процедура для добавления в ListBox
Procedure AddToListBox(S:String; Cl:TColor; LB:TListBox);
begin
Inc(L);//Увеличим длину динамического массива
SetLength(MasColor, L);//Установим новую длину
MasColor[L-1]:=Cl;//Забьём значение в ячейку
LB.Items.Add(S);//Добавим элемент
LB.Perform(LB_SETTOPINDEX, LB.Items.Count-1, 0);//Прокручиваем бегунок
end;
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
PaintMyListBox(ListBox1, Rect, Index);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SetLength(MasColor, L);// Установим кол-во эл-тов массива
MasColor[0]:=$00EB8E56;// Установим цвета
MasColor[1]:=$00004080;
MasColor[2]:=$004369DC;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AddToListBox(Edit1.Text, CLBlue, ListBox1);
end;
end.
Просмотров: 5900
Copyright © 2008 - 2018 Программирование на Delphi для начинающих и не только.
Полнота авторских прав на все материалы, опубликованные на сервере DelphiDevelop.ru принадлежит их авторам.
Перепечатка материалов разрешается с указанием авторства и гиперссылки на первоисточник информации.