Como carregar num TImage uma imagem que está num TImageList
08/05/2008
0
Criei em tempo de execução uma lista de imagens que aparecerão num PDV conforme a data do ano.
Quando não está sendo utilizo, o PDV passará essas imagens como animação.
Já gravei as imagens no banco e estou fazendo o seguinte quando inicio o sistema:
LerImg:=TImage.Create(self); ListaImagens := TImageList.Create(self); while dm.cds_imagens.eof do begin if FileExists(dm.cds_imagens.fieldbyname(´imagem´).asstring) then begin Inc(LoopMax); LerImg.Picture.LoadFromFile(dm.cds_imagens.fieldbyname(´imagem´).asstring); ListaImagens.GetBitmap(LoopMax,LerImg.Picture.Bitmap); end; dm.cds_imagens.Next ; end; LerImg.Free ;
Agora quero colocar num timer e quando o pdv não estiver em uso faço um loop nas imagens do TImageList e passo para um TImage na tela.
Só não sei como carregar a imagem que está no TImageList no TImage.
Alguém tem alguma idéia.
Se fosse pra carregar do disco seria TImage.picture.loadfromfile(´rquivo.bmp´) mas a imagem já está na memória do TImageList
Mario
Aldus
Posts
08/05/2008
Mazzi
E isso para o TImage é necessario para apresentar a imagem.
Eu sugiro que tente fazer por um List que contenha o caminho da Imagem, assim vc conseguiria fazer do jeito q vc quer.
Mesmo por que se carregar de um Path e de um ImageList estara fazendo a carga da figura duas vezes.(pelo metodo do ImageLIst).
08/05/2008
Martins
O q está havendo, vc não consegue carregar nenuma delas no TImage ou somente a primeira imagem carregada é exibida?
09/05/2008
Aldus
Então resolvi gravar apenas o caminho da imagem, ao filtrá-las para mostrar, coloquei-as num StringList e está resolvido.
Obrigado pela atenção dispensada.
Mario
09/05/2008
Emerson Nascimento
o método GetBitmap ´pega´ o bmp do Imagelist e grava num componente bitmap.
para adicionar um bmp ao imagelist, use o método Add.
seria assim:
ao iniciar o sistema:
LerImg := TImage.Create(self); ListaImagens := TImageList.Create(self); dm.cds_imagens.first; // adicionando as imagens ao Imagelist while NOT dm.cds_imagens.eof do begin if FileExists(dm.cds_imagens.fieldbyname(´imagem´).asstring) then begin // carrega a imagem LerImg.Picture.LoadFromFile( dm.cds_imagens.fieldbyname(´imagem´).asstring ); // adiciona, na Imagelist, a imagem carregada em LerImg ListaImagens.Add(LerImg.Picture.Bitmap, nil); end; dm.cds_imagens.Next ; end; LerImg.Free;
depois, ao ´animar´ (num timer, por exemplo):
ListaImagens.GetBitmap(IndiceDaImagemNoImagelist, LerImg.Picture.Bitmap);
onde [i:80273633a4]LerImg.Picture.Bitmap[/i:80273633a4] é objeto que receberá a imagem lida do imagelist
-> lembre-se que pra isso funcionar da forma desejada, as propriedades height e width do imagelist devem ser compatíveis com as dimensões das imagens a serem exibidas.
Clique aqui para fazer login e interagir na Comunidade :)