-
Похожий контент
-
- 0 ответов
- 829 просмотров
-
- 3 ответа
- 944 просмотра
-
- 2 ответа
- 1 344 просмотра
-
- 1 ответ
- 1 545 просмотров
-
- 0 ответов
- 1 248 просмотров
-
- 0 ответов
- 1 471 просмотр
-
- 4 ответа
- 3 397 просмотров
-
- 6 ответов
- 2 049 просмотров
-
- 6 ответов
- 1 928 просмотров
-
- 2 ответа
- 2 451 просмотр
-
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Вопрос
Евгений Корепов
Для одного своего проекта сделал, поделюсь, вдруг кому пригодится. Тестировал под Windows и Android.
Для использования просто добавьте BitmapAsyncLoader в uses, а дальше все просто:
ImageControl.Bitmap.LoadFromURLAsync('https://bipbap.ru/wp-content/uploads/2017/10/0_8eb56_842bba74_XL-640x400.jpg');
Код юнита хелпера:
unit BitmapAsyncLoader; interface uses FMX.Graphics, System.Net.HttpClient, System.Types, System.Classes; type TBitmapAsyncLoader = class helper for TBitmap procedure LoadFromUrlAsync(const AUrl : String); end; implementation var AHTTPClient : THTTPClient; procedure TBitmapAsyncLoader.LoadFromURLAsync(const AURL : String); begin try AHTTPClient.BeginGet( procedure (const ASyncResult: IAsyncResult) var AHTTPResponse : IHTTPResponse; begin if Not ASyncResult.IsCompleted then exit; try AHTTPResponse:=THTTPClient.EndAsyncHTTP(ASyncResult); except end; if Assigned(AHTTPResponse) and (AHTTPResponse.StatusCode = 200) then TThread.Synchronize(Nil, procedure begin try Self.LoadFromStream(AHTTPResponse.ContentStream); except end; end ); end, AURL ); except end; end; initialization AHTTPClient:=THTTPClient.Create; finalization if Assigned(AHTTPClient) then begin AHTTPClient.DisposeOf; end; end.
Архив с тестовым проектом прилагаю.
BitmapAsyncLoader.7z
9 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.