2012-04-11 34 views
18

¿Es posible colocar un TImage en un formulario FMX para iOS y cargar imágenes (jpg) desde una URL en este TImage para mostrar en la aplicación iOS?FireMonkey iOS RAD Studio XE2 - Mostrar imagen en el formulario cargado desde la URL

Lo he intentado sin éxito. Cualquier sugerencia o punto en la dirección correcta es apreciado.

+0

Es difícil decir qué salió mal con esta tarea trivial sin ver el código que escribió que falló. – Kromster

+0

Lo siento, Krom podría estar equivocado, pero en este momento no hay ningún objeto de comunicación en Firemonkey. He buscado hay muchos ejemplos de xcode pero ninguno para FMX. – ckglobalroaming

+0

cualquier pista apreciada, solo apúntame en la dirección correcta – ckglobalroaming

Respuesta

2

caer una TButton, TImageControl y TIdHttp en un formulario FireMonkey y este código se tire hacia abajo de una imagen de la web:

procedure TForm1.btnReadWebImgClick(Sender: TObject); 
begin 
    ReadWebImage('http://www.gravatar.com/avatar/5af5f8c5f88c6c237745e9472a31410f?s=32&d=identicon&r=PG'); 
end; 
procedure TForm1.ReadWebImage(imgAddress: string); 
var 
    memStream: TMemoryStream; 
begin 
    memStream := TMemoryStream.Create; 
    try 
    idhttp1.Get (imgAddress,memStream); 
    except 
    ShowMessage('Image not found at:'+imgAddress); 
    memStream.Free; 
    exit; 
    end; 
    try 
    memStream.Position := 0; 
    ImageControl1.Bitmap.LoadFromStream(memStream); 
    finally 
    memStream.Free; 
    end; 
end; 
0

La respuesta trabaja con un poco de congelación. Cargué 4 imágenes en un bucle. Cuando presiono el botón, el programa se congela para descargar las imágenes, la barra de progreso no funciona y si se descargan continúan perfectamente. Para 4 imágenes congelar durante 1 segundo. Para 50 es "sin conexión" o "mal programa". Este es el código.

procedure TForm1.SpeedButton1Click(Sender: TObject); 
var 
    i: Integer; 
    Stream: TMemoryStream; 
    imgAddress: string; 
begin 
    ProgressBar1.Min := 0; 
    ProgressBar1.Max := Table1.RecordCount; 

    for i := 1 to Table1.RecordCount do 
    begin 
    ProgressBar1.Value := i; 

    imgAddress := VirtualTable1.FieldByName('flyer').AsString; 
    Stream := TMemoryStream.Create; 
    idhttp1.Get (imgAddress,Stream); 

    try 
     Stream.Position := 0; 
     Table1.Edit; 
     TBlobField(Table1.FieldByName('image')).LoadFromStream(Stream); 
     Table1.Post; 
    finally 
     Stream.Free; 
    end; 
    Table1.Next; 
    end; 
    Table1.First; 
end; 
Cuestiones relacionadas