2012-04-11 6 views
18

È possibile posizionare una TImage su un modulo FMX per iOS e caricare l'immagine (jpg) da un URL in questa TImage da visualizzare nell'app iOS?FireMonkey iOS RAD Studio XE2 - Visualizza l'immagine sul modulo caricato dall'URL

Ho provato senza successo. Ogni suggerimento o punto nella giusta direzione è apprezzato.

+0

È difficile dire cosa è andato storto in questo banale compito senza vedere il codice che hai scritto che ha avuto esito negativo. – Kromster

+0

Scusa Krom potrebbe essere sbagliato ma al momento non ci sono oggetti di comunicazione in Firemonkey. Ho cercato ci sono molti esempi di xcode ma nessuno per FMX. – ckglobalroaming

+0

eventuali suggerimenti apprezzati, basta puntare nella giusta direzione – ckglobalroaming

risposta

2

cadere un TButton, TImageControl e TIdHttp su un modulo FireMonkey e questo codice tirerà giù un'immagine dal 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 risposta lavora con un po 'di congelamento. Carico 4 immagini in un loop. Quando premo il pulsante, il programma si blocca per scaricare le immagini, la barra di avanzamento non funziona e se vengono scaricate continuano perfettamente. Per 4 immagini bloccare per 1 secondo. Per 50 è un "no connection" o "Bad Program". Questo è il codice.

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;