Перейти к содержанию
Fire Monkey от А до Я

marsden

Пользователи
  • Постов

    6
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Активность репутации

  1. Like
    marsden получил реакцию от Rusland в Доступ к Yandex.Disk   
    Понимаю, что опоздал почти на два года, но все же, для истории и новичков )))
  2. Like
    marsden получил реакцию от dnekrasov в Доступ к Yandex.Disk   
    Понимаю, что опоздал почти на два года, но все же, для истории и новичков )))
  3. Like
    marsden получил реакцию от Rusland в ListView с картинкой - не работает под Android   
    судя по исходникам, при установленном свойстве картинка считается собственностью ListItemImage и при ListItemImage.Destroy уничтожается. То есть для того, чтобы не было проблем с памятью и сегфолтами надо битмап копировать
  4. Like
    marsden получил реакцию от Rusland в ListView в Берлине и в Токио   
    такая же проблема, но сделано все проще- у ListView выставлено свойство Images, Items создаются программно, у них выставляется ImageIndex.
    Как бы стандартный путь, но... В винде работает, а на смартфоне нет картинок (((
    UPD:
    Моё решение проблемы неотображаемых картинок в ListBoxItem на смартфоне (Android)
    1. Картинки находятся в ImageList1, размер 40х40
    2. ListView обычный стандартный без переделок,
    3. Delphi 10.2 Tokyo
    procedure TMyForm.ListView1UpdateObjects(const Sender: TObject; const AItem: TListViewItem); var I:TListItemImage; B:TBitmap; begin I:=AItem.Objects.FindDrawable('I') as TListItemImage; // такое имя у стандартного ListViewItem без всяких кастомизаций if I<>nil then begin B:=ImageList1.Bitmap(tsizef.Create(40,40),I.ImageIndex); // вытаскиваем картинку по индексу, который задан ранее при заполнении ListView I.OwnsBitmap:=true; // указываем ListViewItem, чтобы он уничтожал экземпляр картинки при своем уничтожении I.Bitmap:=TBitmap.Create; //создаем картинку, которая будет автоматом уничтожена I.Bitmap.Assign(B); // и копируем в нее контент end; end; Если не пользовать Assign, а напрямую присваивать I.Bitmap=ImageList1.Bitmap(.... , то при уничтожении ListViewItem возникает invalid Pointer, поскольку в TListItemImage.Destroy картинка уничтожается без всяких проверок - есть ли жизнь на марсе, нет ли жизни на марсе ли она вообще.
  5. Like
    marsden получил реакцию от Евгений Корепов в ListView в Берлине и в Токио   
    такая же проблема, но сделано все проще- у ListView выставлено свойство Images, Items создаются программно, у них выставляется ImageIndex.
    Как бы стандартный путь, но... В винде работает, а на смартфоне нет картинок (((
    UPD:
    Моё решение проблемы неотображаемых картинок в ListBoxItem на смартфоне (Android)
    1. Картинки находятся в ImageList1, размер 40х40
    2. ListView обычный стандартный без переделок,
    3. Delphi 10.2 Tokyo
    procedure TMyForm.ListView1UpdateObjects(const Sender: TObject; const AItem: TListViewItem); var I:TListItemImage; B:TBitmap; begin I:=AItem.Objects.FindDrawable('I') as TListItemImage; // такое имя у стандартного ListViewItem без всяких кастомизаций if I<>nil then begin B:=ImageList1.Bitmap(tsizef.Create(40,40),I.ImageIndex); // вытаскиваем картинку по индексу, который задан ранее при заполнении ListView I.OwnsBitmap:=true; // указываем ListViewItem, чтобы он уничтожал экземпляр картинки при своем уничтожении I.Bitmap:=TBitmap.Create; //создаем картинку, которая будет автоматом уничтожена I.Bitmap.Assign(B); // и копируем в нее контент end; end; Если не пользовать Assign, а напрямую присваивать I.Bitmap=ImageList1.Bitmap(.... , то при уничтожении ListViewItem возникает invalid Pointer, поскольку в TListItemImage.Destroy картинка уничтожается без всяких проверок - есть ли жизнь на марсе, нет ли жизни на марсе ли она вообще.
  6. Like
    marsden получил реакцию от Евгений Корепов в ListView с картинкой - не работает под Android   
    судя по исходникам, при установленном свойстве картинка считается собственностью ListItemImage и при ListItemImage.Destroy уничтожается. То есть для того, чтобы не было проблем с памятью и сегфолтами надо битмап копировать
  7. Like
    marsden отреагировална Andrey Efimov в Надолго зависает код при загрузке из интернета   
    Например, можно использовать TNetHTTPClient и свойство Asynchronous.
×
×
  • Создать...