Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
ВнизListbox с разными картинками из TImageList Найти похожие ветки
← →
kyn66 © (2005-08-02 13:26) [0]Уважаемые коллеги. Хочу задать вопрос повторно, т.к. явного ответа не получил.Попытаюсь более конкретно объяснить ситуацию. У меня на форме есть ImageList1,содержащий в себе две картики - красный и зеленый квадратик. Есть так-же
ListBox1, временная переменная S1, типа TStrings. Задача такова, чтобы пройдясь по базе и на основании некоторых условий, в преременную S1
заносить некоторые значения, затем эту переменную перенести в ListBox1. Т.к. полученные значения в S1 имеют разный смысл, то в зависимости от этого смысла,в ListBox1 эти значения должны быть видны с первой или второй картинкой из
ImageList1, к примеру все положительные значения должны слева от себя иметь зеленый квадратик, отрицательные - красный. Вот такая стоит задача.
← →
Eraser © (2005-08-02 13:33) [1]kyn66 © (02.08.05 13:26)
1. Вместо абстрактного TStrings используй TStringList.
2. TListBox не содержит "автоматических" средств для работы с картинками, так что используй событие OnDrawItem, для прорисовки вручную.
3. Советую компонент TJvImageListBox из пакета JEDI VCL.
← →
kyn66 © (2005-08-02 13:38) [2]Да не хочется лишние меги навешивать. ЕСть примеры подгрузки в Listbox картинки через объект с диска, мне нужно тоже как-то к Imagelist прикрутить.
← →
Eraser © (2005-08-02 13:42) [3]kyn66 © (02.08.05 13:38) [2]
см. TImageList.GetBitmap + F1
← →
kyn66 © (2005-08-02 17:02) [4]>> Eraser
Спасибо за толчок, вспомнил... ! 8-)
← →
webpauk (2005-08-02 17:13) [5]Добавляешь в зависимости от условия 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-03 17:12) [6]>> webpauk
Именно так я и сделал, Спасибо за наглядный примерчик !
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c