2012-04-11 33 views
18

Có thể đặt TImage trên biểu mẫu FMX cho iOS và tải hình ảnh (jpg) từ URL vào TImage này để hiển thị trong ứng dụng iOS không?FireMonkey iOS RAD Studio XE2 - Hiển thị hình ảnh trên biểu mẫu được tải từ URL

Tôi đã thử không thành công. Bất kỳ gợi ý hoặc điểm nào trong đúng hướng đều được đánh giá cao.

+0

Thật khó để nói những gì đã xảy ra với nhiệm vụ tầm thường này mà không thấy mã bạn viết không thành công. – Kromster

+0

Xin lỗi Krom i có thể sai nhưng tại thời điểm này không có bất kỳ đối tượng comms trong Firemonkey. Tôi đã tìm kiếm có nhiều ví dụ xcode nhưng không có gì cho FMX. – ckglobalroaming

+0

bất kỳ gợi ý nào được đánh giá cao, chỉ cho tôi đi đúng hướng – ckglobalroaming

Trả lời

2

Thả một TButton, TImageControl và TIdHttp vào một hình thức Firemonkey và mã này sẽ kéo xuống một hình ảnh từ trang 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

Câu trả lời làm việc với một đóng băng ít. Tôi tải 4 hình ảnh trong một vòng lặp. Khi tôi nhấn nút, chương trình sẽ đóng băng để tải xuống hình ảnh, thanh tiến trình không hoạt động và nếu được tải xuống tiếp tục hoàn hảo. Dành cho 4 hình ảnh bị đóng băng trong 1 giây. Đối với 50, đó là "không có kết nối" hoặc "Chương trình xấu". Đây là mã.

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; 
Các vấn đề liên quan