Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2012, 10:51   #1
Tony.
Пользователь
 
Регистрация: 14.06.2012
Сообщений: 13
По умолчанию Несколько изображений в listbox

Столкнулся с проблемой: необходимо в listbox в начале каждой строки прикрепить изображение, нашел вариант как сделать одно изображение для всего списка, но мне необходимо чтобы была возможность изменять изображение у конкретной строки, а не у всего списка сразу.
Код:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
  var
  Bitmap: TBitmap;
  Offset: Integer;
  BMPRect: TRect;
begin
  with (Control as TListBox).Canvas do
  begin
     FillRect(Rect);
    Bitmap := TBitmap.Create;
    Bitmap.LoadFromFile('2.bmp');
    Offset := 0;
    if Bitmap <> nil then
    begin
      BMPRect := Bounds(Rect.Left+2, Rect.Top+2,
      (Rect.Bottom-Rect.Top-2)*2, Rect.Bottom-Rect.Top-2);
      {StretchDraw(BMPRect, Bitmap); Можно просто нарисовать, но лучше сначала убрать фон}
      BrushCopy(BMPRect,Bitmap, Bounds(0, 0, Bitmap.Width, Bitmap.Height),
      Bitmap.Canvas.Pixels[0, Bitmap.Height-1]);
      Offset := (Rect.Bottom-Rect.Top+1)*2;
    end;
    TextOut(Rect.Left+Offset, Rect.Top, ListBox1.Items[index]);
    Bitmap.Free;
  end;
Или может можно использовать похожий компонент, необходимо чтобы в строке было изображение и текст. Помогите

Последний раз редактировалось Tony.; 16.06.2012 в 10:54.
Tony. вне форума Ответить с цитированием
Старый 16.06.2012, 11:08   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тебе нужно напхатьки картинок в TImageList, а в отрисовке:
Код:
ImageList1.Draw(ListBox1.Canvas,rect.left+x,rect.top,<Номер картинки>);
x:=x+ImageList1.Width;
ListBox1.Canvas.TextOut(Rect.Left+x,Rect.Top,s[i]);
Выводить сначала картинку, потом текст.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.06.2012, 11:13   #3
Tony.
Пользователь
 
Регистрация: 14.06.2012
Сообщений: 13
По умолчанию

а переменные x s i что?
Tony. вне форума Ответить с цитированием
Старый 16.06.2012, 15:27   #4
Tony.
Пользователь
 
Регистрация: 14.06.2012
Сообщений: 13
По умолчанию

Решил проблему
Tony. вне форума Ответить с цитированием
Старый 16.06.2012, 16:09   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а переменные x s i что?
Код:
ImageList1.Draw(ListBox1.Canvas,rect.left,rect.top,<Номер картинки>);
ListBox1.Canvas.TextOut(Rect.Left+ImageList1.Width,Rect.Top,ListBox1.Items[i]);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Привязка изображений к ListBox jaguar8989 C++ Builder 4 03.04.2012 16:31
Программно выбрать несколько строк в Listbox Radin Помощь студентам 3 09.11.2011 17:12
Virtual Treeview и несколько изображений grafgrial Общие вопросы Delphi 2 04.07.2011 19:57
Вывод изображений из списка ListBox ChEaTeR-abc Помощь студентам 6 13.07.2010 16:55
как загрузить в ListBox несколько текстовых файлов? One.Love Общие вопросы Delphi 5 14.01.2008 11:54