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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2012, 18:33   #1
sxcine
Пользователь
 
Аватар для sxcine
 
Регистрация: 26.05.2010
Сообщений: 78
Вопрос ListBox строки и картинки

добрый вечер
на форме есть листбокс, кнопка, по нажатию которой добавляется строка в этот листбокс и список картинок размером 20х20 в ImageList.
как сделать так, чтобы при добавлении строки каждый раз была разная картинка?
sxcine вне форума Ответить с цитированием
Старый 02.02.2012, 18:55   #2
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Копайте в стороноу события OnDrawItem.
Картинки выводите рандомно.
Delphi_ProGer вне форума Ответить с цитированием
Старый 02.02.2012, 19:07   #3
sxcine
Пользователь
 
Аватар для sxcine
 
Регистрация: 26.05.2010
Сообщений: 78
По умолчанию

Цитата:
Сообщение от Delphi_ProGer Посмотреть сообщение
Копайте в стороноу события OnDrawItem.
Картинки выводите рандомно.
я вывожу их щас, но после добавления следующей строки все предыдущие картинки становятся как и текущая.
Код:
var
  Form1: TForm1;
  filen: string;

implementation

{$R *.dfm}

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(FileN);
    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);
      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;
end;

procedure Wr(fn,text: string);
begin
filen := fn;
form1.ListBox1.Items.Add(text);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 wr('Безымянный.bmp','пыщ пыщ');
 wr('Безымянный1.bmp','fffuuccckk');
end;
sxcine вне форума Ответить с цитированием
Старый 02.02.2012, 20:21   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Нужно в ListBox1DrawItem имя загружаемого файла формировать в зависимости от итема. Можно от ItemIndex. Можно от значения записанного в Items.Objects, но тогда итемы добавлять не методом Add, а методом ListBox.AddItem или ListBox.Items.AddObject
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 02.02.2012 в 20:26.
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод строки в listbox c++ world12_tk Помощь студентам 2 17.09.2011 12:01
добавление строки в Listbox массивом Composter Microsoft Office Excel 8 04.05.2011 14:42
Выбор картинки из listBox с последующим выводом в pictureBox C# Авторитет Общие вопросы .NET 4 13.06.2010 10:57
Вставка картинки в listbox Rapala Мультимедиа в Delphi 0 16.05.2010 16:04
Строки в ListBox Ray1987 Компоненты Delphi 2 10.04.2007 00:57