Zły przykład Tobie podałem, ale mogłeś przecież zamiast czekać na odpowiedź wpisać w google: delphi listbox color items i pod
tym adresem http://delphi.about.com/cs/adptips2002/a/bltip0602_4.htm masz prawidlowy przykład. Nie musisz też używać do
przechowywania kolorów żadnej tablicy. Sam ListBox może być taką tablicą, bo może on przechowywać obiekty, tak jak i inne z
dostepnych komponentów z TStrings, w tym niewizualne TStringList. Dodajesz tylko element rzutując na TColor, bo w Objects da
się przechować różnego rodzaju typy, również własne. Jedynie dla przechowywania tekstów trzeba utworzyć własny typ TObject,
w ktorym poprzez jedno z pół typu string będziesz mógł przechowywać teksty, ale jak widać z zapisem koloru, nie ma problemu.
//...
procedure TForm1.FormCreate(Sender : TObject);
begin
Randomize;
ListBox1.Style := lbOwnerDrawFixed;
end;
procedure TForm1.ListBox1DrawItem(Control : TWinControl; Index : Integer;
Rect : TRect; State : TOwnerDrawState);
var
MyColor : TColor;
MyBrush : TBrush;
begin
MyBrush := TBrush.Create;
with (Control as TListBox).Canvas do
begin
MyColor := TColor(TListBox(Control).Items.Objects[Index]);
MyBrush.Style := bsSolid;
MyBrush.Color := MyColor;
Windows.FillRect(handle, Rect, MyBrush.Handle);
Brush.Style := bsClear;
TextOut(Rect.Left, Rect.Top, (Control as TListBox).Items[Index]);
MyBrush.Free;
end;
end;
procedure TForm1.Button1Click(Sender : TObject);
begin
ListBox1.Items.AddObject(Edit1.Text, (TObject(TColor(RGB(Random(256), Random(256), Random(256))))));
end;