Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.035 c
9-1114391502
Don Nikola
2005-04-25 05:11
2005.08.21
Всем любителям 3D, MMORPG и прочего высокотехнологичного ...


1-1122630609
Aleksandr.
2005-07-29 13:50
2005.08.21
Как правильно удалить TMenuItem?


14-1122538370
Choovak
2005-07-28 12:12
2005.08.21
Символы


4-1120277989
Kerk
2005-07-02 08:19
2005.08.21
Хендл окна при WH_KEYBOARD_LL


3-1121166891
Ирина
2005-07-12 15:14
2005.08.21
Сортировка




   Наверх