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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2014, 16:47   #1
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию lazarus картинки в ListView

Здравствуйте.
Кинул на форму ListView и ImageList. В свойстве ListView.StateImages поставил ImageList. Style поставил vsIcon.
Написал процедуру поиска файлов в папке:
Код:
procedure tform1.find(dir : string; recurse: boolean);
const
  thumbsize = 100;
var
  sr : TSearchRec;
  ext,t : string;
  li: tlistitem;
  bmp1,bmp2 : tbitmap;
  r,r2 : trect;
begin
  if dir[length(dir)]<>'\' then
  dir := dir+'\';
if FindFirst(dir+'*.*',faAnyFile, sr)=0 then
repeat
  if (sr.Name<>'.') and (sr.Name<>'..') then
  begin
      if (((sr.Attr and fahidden)=0) and ((sr.Attr and fadirectory)=0)) then
      begin
        t := dir + sr.Name;
        ext := lowercase(extractfileext(t));
        if (ext='.bmp') {or (ext='.jpg') or (ext='.jpeg')} then
        begin
         if ext='.bmp' then
          begin
            bmp1 := TBitmap.Create;
            bmp2 := TBitmap.Create;
            bmp1.LoadFromFile(t);
            SetRect(r2,0,0,ThumbSize,ThumbSize);
            SetRect(r,0,0,bmp1.Width,bmp1.Height);
            ResizeRect(r,r2);
            bmp2.Width := ThumbSize;
            bmp2.Height := ThumbSize;
            bmp2.Canvas.StretchDraw(r,bmp1);
            ImgList.Add(bmp2,nil);
            bmp1.Free;
            bmp2.Free;
            li := lv1.Items.Add;
            li.Caption:= t;
          end;
        end;
      end;
      if recurse then
      if (((sr.Attr and fahidden)=0) and ((sr.Attr and fadirectory)<>0)) then
      begin
        find(dir+sr.Name, recurse);
      end;
  end;
  application.ProcessMessages;
until FindNext(sr)<>0;
SysUtils.FindClose(sr);
end;
но в результате, в ListView отображается только первая картинка.

что не так?
BLACK_RAIN вне форума Ответить с цитированием
Старый 02.12.2014, 17:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это потому что у тебя один объект для битмапа.
А тебе нужен массив таких объектов или ImageList.
Но я думаю что стоит создать список битмапов на основе TComponentList.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.12.2014, 07:34   #3
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это потому что у тебя один объект для битмапа.
А тебе нужен массив таких объектов или ImageList.
Где у меня один объект? Я же ImageList юзаю.
Всё решилось установкой LargeImage вместо StateImage и указанием индекса картинки.
BLACK_RAIN вне форума Ответить с цитированием
Старый 04.12.2014, 15:52   #4
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Почему на винде и линуксе список выглядит по-разному?

винда <> Kubuntu 14.04
Как привести к виду как в винде?
BLACK_RAIN вне форума Ответить с цитированием
Старый 04.12.2014, 18:51   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ImgList.Add(bmp2,nil);
Прошу прощения, не заметил этого.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.12.2014, 09:45   #6
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Я понял. Это из-за того, что в линуксе не переносятся длинные надписи под эскизами. Но почему? Ведь свойство WrapText равно true.
BLACK_RAIN вне форума Ответить с цитированием
Старый 05.12.2014, 11:02   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не исключено что это недоработки Лазаря. Лично я не сталкивался.
А может от самого Пингвинчика зависит...
Попробуй открыть генофонд и посмотреть как это свойство устроено и на что влияет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.12.2014, 13:26   #8
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

генофонд? это типа исходники классов и компонентов LCL?
BLACK_RAIN вне форума Ответить с цитированием
Старый 05.12.2014, 13:46   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Они самые
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.12.2014, 13:57   #10
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Они самые
ок, время будет покопаюсь.
а пока можно просто подписи не ставить. Они не так важны.
P.S. какая-то фиговая кроссплатформенность получается
BLACK_RAIN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перетащить элемент ListView в другой ListView? Paul Hindenburg Компоненты Delphi 5 26.01.2013 11:35
Перекомпиляция программы(простой) Win Lazarus в Linux Lazarus Toxifer Фриланс 0 27.11.2012 22:46
[C# + WPF] ListView. Узнать выделена ли строка в нём. ListView.View == GridView. Casper-SC WPF, UWP, WinRT, XAML 2 12.08.2010 19:04
Отображение картинки на кнопке WPF. Загрузка картинки из ресурсов. Проблема с Uri. Casper-SC Общие вопросы .NET 0 27.06.2010 23:11
Размер Image изменяется на размер картинки, а сама она рисуется на области первой картинки RPGer Мультимедиа в Delphi 6 20.10.2008 19:54