Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.21;
Скачать: 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 вся ветка

Текущий архив: 2005.08.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.053 c
14-1122487440
Starcom
2005-07-27 22:04
2005.08.21
Как узнать кто аттакует?


1-1122997110
sia
2005-08-02 19:38
2005.08.21
просмотр HTML


4-1120039713
Maxk
2005-06-29 14:08
2005.08.21
как получить и название видюхи, материнки и т. д.


4-1119859178
delphistik
2005-06-27 11:59
2005.08.21
Terminate Task


1-1122497703
SpyBoy
2005-07-28 00:55
2005.08.21
Качественный текст