![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Listbox с разными картинками из TImageList [D7, WinXP]
kyn66 © (2005-08-02 13:26:00)Уважаемые коллеги. Хочу задать вопрос повторно, т.к. явного ответа не получил.Попытаюсь более конкретно объяснить ситуацию. У меня на форме есть ImageList1,содержащий в себе две картики - красный и зеленый квадратик. Есть так-же
ListBox1, временная переменная S1, типа TStrings. Задача такова, чтобы пройдясь по базе и на основании некоторых условий, в преременную S1
заносить некоторые значения, затем эту переменную перенести в ListBox1. Т.к. полученные значения в S1имеют разный смысл, то в зависимости от этого смысла,в ListBox1эти значения должны быть видны с первой или второй картинкой из
ImageList1, к примеру все положительные значения должны слева от себя иметь зеленый квадратик, отрицательные - красный. Вот такая стоит задача.
kyn66 (2005-08-03 17:12:00) [1]>> webpauk
Именно так я и сделал, Спасибо за наглядный примерчик !
webpauk (2005-08-02 17:13:00) [2]Добавляешь в зависимости от условия TheBitmap
Imagelist1.Getbitmap(0..1, TheBitmap);
ListBox1.AddItem('Чего-угодно', TheBitmap);
а для ListBoxa устанавливаешь style в OwnerDrawFixed и прописываешь код
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
fB: tbitmap;
begin
with (Control as TListBox).Canvas do
begin
FillRect(Rect);
fB:= TBitmap((Control as TListBox).Items.Objects[Index]);
if fB<>nil then
begin
Draw(Rect.Left + 1, Rect.Top , TBitmap((Control as TListBox).Items.Objects[Index]));
end;
IF odSelected IN State Then
Begin
(Control as TListBox).Canvas.Brush.Color:= clHighLight;
(Control as TListBox).Canvas.Font.Color := clHighLightText;
End;
TextOut(Rect.Left+20, Rect.Top, (Control as TListBox).Items[Index])
end;
end;
kyn66 (2005-08-02 17:02:00) [3]>> Eraser
Спасибо за толчок, вспомнил... ! 8-)
Eraser (2005-08-02 13:42:00) [4]kyn66 © (02.08.05 13:38) [2]
см. TImageList.GetBitmap + F1
kyn66 (2005-08-02 13:38:00) [5]Да не хочется лишние меги навешивать. ЕСть примеры подгрузки в Listbox картинки через объект с диска, мне нужно тоже как-то к Imagelist прикрутить.
Eraser (2005-08-02 13:33:00) [6]kyn66 © (02.08.05 13:26)
1. Вместо абстрактного TStrings используй TStringList.
2. TListBox не содержит "автоматических" средств для работы с картинками, так что используй событие OnDrawItem, для прорисовки вручную.
3. Советую компонент TJvImageListBox из пакета JEDI VCL.