Все привет. У на разных сайтах спрашивают как можно разрисовать ListBox например для медиа плеера. Есть очень длинные и тяжёлые коды что б это осуществить, но это не тот случай. В этом уроке мы рассмотрим самый простой способ отрисовки TListBox. Идея заключается в том что чётные строки будут одного цвета(например серыми), а нечётные будут белыми. Приступим: Создаём новый проэкт и кидаем на форму Listbox из закладки Standart и ставим свойство style := lbOwnerDrawVariable или lbOwnerDrawFixed. После этого кидаем на форму 2 компонента Timage из закладки Aditional и загружаем в них картинки(такие что можна растянуть) потом в собитии listbox-a OnDrawItem прописываем: Code procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin
if index mod 2 = 0 then begin listbox1.Canvas.StretchDraw(rect, image2.Picture.Graphic); // кидаем картинку listbox1.Canvas.TextOut(rect.Left, rect.Top, listbox1.Items[index]); //показываем текст end;
if index mod 2 = 1 then begin listbox1.Canvas.StretchDraw(rect, image1.Picture.Graphic); listbox1.Canvas.TextOut(rect.Left, rect.Top, listbox1.Items[index]); end; end; Вот и всё. Теперь для убедительности киньте кнопку на форму и пропишите: Code procedure TForm1.SpeedButton1Click(Sender: TObject); var i:integer; begin i:=listbox1.Items.Count; //количество item-ов listbox1.Items.Add('Item #' + inttostr(i)); //добавляем по одному end; end; Всё работает отлично и без збоев. Всем пока Продолжение следует ...
|