procedure TForm1.LoadImages;
var
Layer: TLayer;
c: TCustomSourceItem;
B: TCustomBitmapItem;
d: TCustomDestinationItem;
Item: TListBoxItem;
i: integer;
sRec: TSearchRec;
isFound: boolean;
filecount: integer;
begin
isFound := FindFirst(Form1.imagefolder + '*.png', faAnyFile, sRec) = 0;
while isFound do
begin
showmessage(sRec.Name);
d := ImageList1.Destination.Add;
Layer := ImageList1.Destination[d.index].Layers.Add;
Layer.SourceRect.Rect := TRectF.Create(TPoint.Zero, 48, 48);
c := ImageList1.Source.Add;
Layer.Name := c.Name;
c.MultiResBitmap.TransparentColor := TAlphaColorRec.Fuchsia;
B := c.MultiResBitmap.Add;
B.Bitmap.Assign(B.CreateBitmap(Form1.imagefolder + sRec.Name));
application.ProcessMessages;
isFound := FindNext(sRec) = 0;
end;
FindClose(sRec);
end;
Она работает, но есть проблема. Картинки в папке пронумерованы: 001.png, 002.png и т.д.
В винде, как и положено обработка начинается с первой и кончается последней картинкой. Соответственно ImageIndex у картинок соответствует названию файла (практически).
В Андроиде файлы из папки берутся в порядке их деплоя. Почему - не понятно.
Решение конечно есть - задеплоить файлы в нужном порядке, но в Deployment менеджере нет сортировок или перемещений вверх вниз. Придется каждый файл удалить и заново прописать. Может кто знает, как это сделать правильно?
Вопрос
gonzales
Доброго всем!
Вот процедура загрузки картинок *png в imagelist
procedure TForm1.LoadImages; var Layer: TLayer; c: TCustomSourceItem; B: TCustomBitmapItem; d: TCustomDestinationItem; Item: TListBoxItem; i: integer; sRec: TSearchRec; isFound: boolean; filecount: integer; begin isFound := FindFirst(Form1.imagefolder + '*.png', faAnyFile, sRec) = 0; while isFound do begin showmessage(sRec.Name); d := ImageList1.Destination.Add; Layer := ImageList1.Destination[d.index].Layers.Add; Layer.SourceRect.Rect := TRectF.Create(TPoint.Zero, 48, 48); c := ImageList1.Source.Add; Layer.Name := c.Name; c.MultiResBitmap.TransparentColor := TAlphaColorRec.Fuchsia; B := c.MultiResBitmap.Add; B.Bitmap.Assign(B.CreateBitmap(Form1.imagefolder + sRec.Name)); application.ProcessMessages; isFound := FindNext(sRec) = 0; end; FindClose(sRec); end;
Она работает, но есть проблема. Картинки в папке пронумерованы: 001.png, 002.png и т.д.
В винде, как и положено обработка начинается с первой и кончается последней картинкой. Соответственно ImageIndex у картинок соответствует названию файла (практически).
В Андроиде файлы из папки берутся в порядке их деплоя. Почему - не понятно.
Решение конечно есть - задеплоить файлы в нужном порядке, но в Deployment менеджере нет сортировок или перемещений вверх вниз. Придется каждый файл удалить и заново прописать. Может кто знает, как это сделать правильно?
Заранее спасибо за ответы
Ссылка на комментарий
7 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.