sistema1 Novato
Registrado: Domingo, 25 de Mai de 2008 Mensagens: 5
|
Enviada: Sáb Nov 16, 2019 12:07 pm Assunto: Imgem de Url travando aplicativo Delphi mobile |
|
|
Ola pessoal.. sou inciante em delphi mobile e estou com a seguinte situação:
tenho 3 listview que recebe dados via rest de um site PHP
usando restCliente, RestREquest e restResponse...
os dados recebe certim, popula alistvew tudo corretamente, compila também tudo normal.... o problema vem a seguir.....
no rest tem um campo imagem (jpg,png) somente a url da imagem,
uso esta função para converter a imagem em Bitmap
Código: |
function TfrmPrincipal.LerImage(url: string): TBitmap;
var
strm : TmemoryStream;
begin
strm := TMemoryStream.Create;
try
http.Get(url,strm);
strm.Position := 0;
Result := TBitmap.Create;
result.Width := 100;
result.Height := 50;
result.LoadFromStream(strm);
finally
strm.Free;
end;
end;
|
porem quando coloco na listview esta imagem o aplicativo trava (para de responder..... uso desta forma no listview
Código: |
procedure TFrmprincipal.ExecuteREST(aList: TListview; aArray: string);
var
obj : TjsonObject;
Item : TlistviewItem;
lResult : TjsonArray;
strm : TMemoryStream;
begin
lResult := REST(aArray);
TThread.CreateAnonymousThread(
procedure
var
i: Integer;
begin
for i:= 0 to lresult.Count-1 do
begin
TThread.Synchronize(TThread.CurrentThread, procedure()
begin
obj := lResult.Items[i] as TJSONObject;
Item := aList.Items.Add;
item.text := obj.GetValue('nome').Value;
if (obj.GetValue('logo').ToString <> 'null') then
Item.bitmap := LerImage(''+PathUrl+'/images/empresas/'+obj.GetValue('logo').Value)
else
Item.bitmap := LerImage(''+PathUrl+'/images/empresas/semimagem.png');
end);
end
end).Start;
end;
|
O detalhe é se coloco apenas 2 listview funciona corretamente... mas se colocar um botão pra puxar o outro listview trava também.....
Ja tentei de várias formas, com TTask, com Thread e sem Thread, com synchronize, com Queue e nada.....
alguem me dá uma luz como resolver isso?? |
|