Главная страница
    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.037 c
14-1122788688
geidarka
2005-07-31 09:44
2005.08.21
вопрос по combobox (option) и MySQL


1-1122584688
ronyn
2005-07-29 01:04
2005.08.21
Где можно найти инфу по написанию программ для мобильников?


3-1121233551
silvestr
2005-07-13 09:45
2005.08.21
Проблема при вставке записи с помощью хранимой процедуры


3-1121166715
Максим
2005-07-12 15:11
2005.08.21
Работа с полями DBGrid ?


6-1114143431
M@X
2005-04-22 08:17
2005.08.21
компоненты TcpClient TcpServer





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский