Главная страница
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.047 c
3-1121072288
finn
2005-07-11 12:58
2005.08.21
Закрыть доступ к строке,а не к таблице (BDE)


14-1122541307
Gydvin
2005-07-28 13:01
2005.08.21
Forex


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


14-1122613410
Rentgen
2005-07-29 09:03
2005.08.21
АвтоПереименование в IDE Delphi


4-1119448969
Алена
2005-06-22 18:02
2005.08.21
Отловить завершение процесса