Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.034 c
3-1120903774
Russko
2005-07-09 14:09
2005.08.21
Интересный запрос с группировкой


14-1122620714
NickMan
2005-07-29 11:05
2005.08.21
Программы для интернет - радио


14-1122634426
zavisalych
2005-07-29 14:53
2005.08.21
Прошу оценить новый компонент и высказать свое мнение


14-1122742383
TStas
2005-07-30 20:53
2005.08.21
Сколько же лет Вирт паскаль писал?


1-1122632875
vers
2005-07-29 14:27
2005.08.21
Прорисовка формы в DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский