-
Постов
2 517 -
Зарегистрирован
-
Посещение
-
Победитель дней
264
Активность репутации
-
Равиль Зарипов (ZuBy) получил реакцию от Rusland в Странное поведение TThread
само скачивание картинки HTTPClient.Get должен быть в потоке, а при успешном скачивании нужно делать синхронизацию с главным потоком и "вставлять" картинку в нужное место
-
Равиль Зарипов (ZuBy) получил реакцию от Pax Beach в Как определить отсутствие изображения как такового в TBitmap?
У TBitmap есть такой метод, посмотрите его
function TBitmap.EqualsBitmap(const Bitmap: TBitmap): Boolean; var MyMap, BitmapMap: TBitmapData; I: Integer; begin if IsEmpty or Bitmap.IsEmpty then begin Result := IsEmpty and Bitmap.IsEmpty; Exit; end; Result := (Width = Bitmap.Width) and (Height = Bitmap.Height) and (PixelFormat = Bitmap.PixelFormat); if Result then begin if Map(TMapAccess.Read, MyMap) then try if Bitmap.Map(TMapAccess.Read, BitmapMap) then try for I := 0 to Height - 1 do if not CompareMem(MyMap.GetScanline(I), BitmapMap.GetScanline(I), MyMap.BytesPerLine) then begin Result := False; Exit; end; finally Bitmap.Unmap(BitmapMap); end; finally Unmap(MyMap); end; end; end;
-
Равиль Зарипов (ZuBy) отреагировална rareMax в Текст с картинками и скроллингом
А делфи мучать обязательно? Сохрани word как pdf'ку и открывай на телефоне
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в файл не находится
Все используют деплой, вот попробуйте этот проект запустить у себя
-
Равиль Зарипов (ZuBy) получил реакцию от AngryOwl в Прозрачные контролы
в FMX все делается с помощью стилей, нужно отредактировать стиль TGroupbox
-
Равиль Зарипов (ZuBy) отреагировална Andrey Efimov в Version Info, label (Android)
Прямая ссылка в блог: Автоматическая смена названия приложения в зависимости от языка системы
Ссылка на форуме(Раздел "Статьи"): [Статья][Android] Автоматическая смена названия приложения в зависимости от языка системы
и ещё есть обычные темы по этому вопросу, но прикладывать не буду.
p.s. Народ совсем обленился, сложно поиском воспользоваться...
-
Равиль Зарипов (ZuBy) получил реакцию от Rusland в Странное поведение TThread
procedure LoadBitmapFromURL(const aURL: string; aBitmap: TBitmap; const aSuccess: TThreadProcedure = nil; const aError: TThreadProcedure = nil); var thread: TThread; begin thread := TThread.CreateAnonymousThread( procedure var HTTP: THTTPClient; Result: TMemoryStream; begin Result := TMemoryStream.Create; HTTP := THTTPClient.Create; try try HTTP.Get(aURL, Result); TThread.Synchronize(TThread.CurrentThread, procedure var aSourceBmp: TBitmap; begin aSourceBmp := TBitmap.Create; try aSourceBmp.LoadFromStream(Result); if not aSourceBmp.IsEmpty then begin aBitmap.SetSize(aSourceBmp.Width, aSourceBmp.Height); aBitmap.CopyFromBitmap(aSourceBmp); if Assigned(aSuccess) then aSuccess; end; finally FreeAndNil(aSourceBmp); end; end); except TThread.Synchronize(TThread.CurrentThread, procedure begin if Assigned(aError) then aError; end); end; finally FreeAndNil(Result); FreeAndNil(HTTP); end; end); thread.FreeOnTerminate := true; thread.start; end; в последнее время пользуюсь такой конструкцией
-
Равиль Зарипов (ZuBy) получил реакцию от AngryOwl в Странное поведение TThread
само скачивание картинки HTTPClient.Get должен быть в потоке, а при успешном скачивании нужно делать синхронизацию с главным потоком и "вставлять" картинку в нужное место
-
Равиль Зарипов (ZuBy) получил реакцию от M1shQa в Текст с картинками и скроллингом
я бы сделал через браузер и html документ, как раз подойдёт для вашей задачи
-
Равиль Зарипов (ZuBy) получил реакцию от AngryOwl в Странное поведение TThread
procedure LoadBitmapFromURL(const aURL: string; aBitmap: TBitmap; const aSuccess: TThreadProcedure = nil; const aError: TThreadProcedure = nil); var thread: TThread; begin thread := TThread.CreateAnonymousThread( procedure var HTTP: THTTPClient; Result: TMemoryStream; begin Result := TMemoryStream.Create; HTTP := THTTPClient.Create; try try HTTP.Get(aURL, Result); TThread.Synchronize(TThread.CurrentThread, procedure var aSourceBmp: TBitmap; begin aSourceBmp := TBitmap.Create; try aSourceBmp.LoadFromStream(Result); if not aSourceBmp.IsEmpty then begin aBitmap.SetSize(aSourceBmp.Width, aSourceBmp.Height); aBitmap.CopyFromBitmap(aSourceBmp); if Assigned(aSuccess) then aSuccess; end; finally FreeAndNil(aSourceBmp); end; end); except TThread.Synchronize(TThread.CurrentThread, procedure begin if Assigned(aError) then aError; end); end; finally FreeAndNil(Result); FreeAndNil(HTTP); end; end); thread.FreeOnTerminate := true; thread.start; end; в последнее время пользуюсь такой конструкцией
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в Странное поведение TThread
а что удивительного? вы загружаете в синхронизации, т.е. в главном потоке
-
Равиль Зарипов (ZuBy) получил реакцию от enatechno в ColorComboBox произвольный список цветов
const aColorNames: array [0 .. 3] of string = ('Black', 'Red', 'Yellow', 'Green'); aColors: array [0 .. 3] of TAlphaColor = (TAlphaColorrec.Black, TAlphaColorrec.red, TAlphaColorrec.Yellow, TAlphaColorrec.Green); procedure TForm1.DoItemApplyStyleLookup(Sender: TObject); var ColorObj: TShape; begin if TListBoxItem(Sender).FindStyleResource<TShape>('color', ColorObj) then ColorObj.Fill.Color := aColors[TListBoxItem(Sender).Tag]; end; procedure TForm1.Button1Click(Sender: TObject); var aItem: TListBoxItem; I: Integer; begin ComboBox1.DropDownKind := TDropDownKind.Custom; // uses FMX.Pickers; for I := Low(aColorNames) to High(aColorNames) do begin aItem := TListBoxItem.Create(ComboBox1); aItem.Parent := ComboBox1; aItem.Text := aColorNames[I]; aItem.Width := aItem.DefaultSize.Width; aItem.Height := aItem.DefaultSize.Height; aItem.StyleLookup := 'colorlistboxitemstyle'; aItem.StylesData['color.Fill.Color'] := aColors[I]; aItem.OnApplyStyleLookup := DoItemApplyStyleLookup; aItem.Tag := I; end; end; как-то так
-
Равиль Зарипов (ZuBy) получил реакцию от enatechno в ColorComboBox произвольный список цветов
Внутри TComboBox используется TListBox
Cамый простой способ
кинуть на форму TListBox ПКМ Add TListBoxItem выбрать нужный стиль для Item (StyleLookup) ПКМ по Item Edit Custom Style меняем что нужно в стиле и сохраняем применяем новый стиль к Item -
Равиль Зарипов (ZuBy) получил реакцию от denprox в ColorComboBox произвольный список цветов
Внутри TComboBox используется TListBox
Cамый простой способ
кинуть на форму TListBox ПКМ Add TListBoxItem выбрать нужный стиль для Item (StyleLookup) ПКМ по Item Edit Custom Style меняем что нужно в стиле и сохраняем применяем новый стиль к Item -
Равиль Зарипов (ZuBy) получил реакцию от Major в Прозрачные контролы
в FMX все делается с помощью стилей, нужно отредактировать стиль TGroupbox
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в Странное поведение TThread
procedure LoadBitmapFromURL(const aURL: string; aBitmap: TBitmap; const aSuccess: TThreadProcedure = nil; const aError: TThreadProcedure = nil); var thread: TThread; begin thread := TThread.CreateAnonymousThread( procedure var HTTP: THTTPClient; Result: TMemoryStream; begin Result := TMemoryStream.Create; HTTP := THTTPClient.Create; try try HTTP.Get(aURL, Result); TThread.Synchronize(TThread.CurrentThread, procedure var aSourceBmp: TBitmap; begin aSourceBmp := TBitmap.Create; try aSourceBmp.LoadFromStream(Result); if not aSourceBmp.IsEmpty then begin aBitmap.SetSize(aSourceBmp.Width, aSourceBmp.Height); aBitmap.CopyFromBitmap(aSourceBmp); if Assigned(aSuccess) then aSuccess; end; finally FreeAndNil(aSourceBmp); end; end); except TThread.Synchronize(TThread.CurrentThread, procedure begin if Assigned(aError) then aError; end); end; finally FreeAndNil(Result); FreeAndNil(HTTP); end; end); thread.FreeOnTerminate := true; thread.start; end; в последнее время пользуюсь такой конструкцией
-
Равиль Зарипов (ZuBy) получил реакцию от Alex7wrt в Прозрачные контролы
в FMX все делается с помощью стилей, нужно отредактировать стиль TGroupbox
-
Равиль Зарипов (ZuBy) отреагировална enatechno в Прозрачные контролы
Это решается редактированием стиля.
Например так:
1). Размещаете TGroupbox на форме
2). ПКМ на нем
3). в контекстном меню выбираете Edit Custom Style (или Edit Default style)
4). в открывшемся редакторе стиля указываете платформу (Android)
5). выбираете объект background (по умолчанию он белый).
6). задаете ему свойство Visible=false
-
Равиль Зарипов (ZuBy) получил реакцию от Andrey Efimov в Странное поведение TThread
procedure LoadBitmapFromURL(const aURL: string; aBitmap: TBitmap; const aSuccess: TThreadProcedure = nil; const aError: TThreadProcedure = nil); var thread: TThread; begin thread := TThread.CreateAnonymousThread( procedure var HTTP: THTTPClient; Result: TMemoryStream; begin Result := TMemoryStream.Create; HTTP := THTTPClient.Create; try try HTTP.Get(aURL, Result); TThread.Synchronize(TThread.CurrentThread, procedure var aSourceBmp: TBitmap; begin aSourceBmp := TBitmap.Create; try aSourceBmp.LoadFromStream(Result); if not aSourceBmp.IsEmpty then begin aBitmap.SetSize(aSourceBmp.Width, aSourceBmp.Height); aBitmap.CopyFromBitmap(aSourceBmp); if Assigned(aSuccess) then aSuccess; end; finally FreeAndNil(aSourceBmp); end; end); except TThread.Synchronize(TThread.CurrentThread, procedure begin if Assigned(aError) then aError; end); end; finally FreeAndNil(Result); FreeAndNil(HTTP); end; end); thread.FreeOnTerminate := true; thread.start; end; в последнее время пользуюсь такой конструкцией
-
Равиль Зарипов (ZuBy) получил реакцию от Brovin Yaroslav в Странное поведение TThread
а что удивительного? вы загружаете в синхронизации, т.е. в главном потоке
-
Равиль Зарипов (ZuBy) получил реакцию от Brovin Yaroslav в Странное поведение TThread
само скачивание картинки HTTPClient.Get должен быть в потоке, а при успешном скачивании нужно делать синхронизацию с главным потоком и "вставлять" картинку в нужное место
-
Равиль Зарипов (ZuBy) получил реакцию от Brovin Yaroslav в Странное поведение TThread
procedure LoadBitmapFromURL(const aURL: string; aBitmap: TBitmap; const aSuccess: TThreadProcedure = nil; const aError: TThreadProcedure = nil); var thread: TThread; begin thread := TThread.CreateAnonymousThread( procedure var HTTP: THTTPClient; Result: TMemoryStream; begin Result := TMemoryStream.Create; HTTP := THTTPClient.Create; try try HTTP.Get(aURL, Result); TThread.Synchronize(TThread.CurrentThread, procedure var aSourceBmp: TBitmap; begin aSourceBmp := TBitmap.Create; try aSourceBmp.LoadFromStream(Result); if not aSourceBmp.IsEmpty then begin aBitmap.SetSize(aSourceBmp.Width, aSourceBmp.Height); aBitmap.CopyFromBitmap(aSourceBmp); if Assigned(aSuccess) then aSuccess; end; finally FreeAndNil(aSourceBmp); end; end); except TThread.Synchronize(TThread.CurrentThread, procedure begin if Assigned(aError) then aError; end); end; finally FreeAndNil(Result); FreeAndNil(HTTP); end; end); thread.FreeOnTerminate := true; thread.start; end; в последнее время пользуюсь такой конструкцией
-
Равиль Зарипов (ZuBy) получил реакцию от Rusland в ColorComboBox произвольный список цветов
const aColorNames: array [0 .. 3] of string = ('Black', 'Red', 'Yellow', 'Green'); aColors: array [0 .. 3] of TAlphaColor = (TAlphaColorrec.Black, TAlphaColorrec.red, TAlphaColorrec.Yellow, TAlphaColorrec.Green); procedure TForm1.DoItemApplyStyleLookup(Sender: TObject); var ColorObj: TShape; begin if TListBoxItem(Sender).FindStyleResource<TShape>('color', ColorObj) then ColorObj.Fill.Color := aColors[TListBoxItem(Sender).Tag]; end; procedure TForm1.Button1Click(Sender: TObject); var aItem: TListBoxItem; I: Integer; begin ComboBox1.DropDownKind := TDropDownKind.Custom; // uses FMX.Pickers; for I := Low(aColorNames) to High(aColorNames) do begin aItem := TListBoxItem.Create(ComboBox1); aItem.Parent := ComboBox1; aItem.Text := aColorNames[I]; aItem.Width := aItem.DefaultSize.Width; aItem.Height := aItem.DefaultSize.Height; aItem.StyleLookup := 'colorlistboxitemstyle'; aItem.StylesData['color.Fill.Color'] := aColors[I]; aItem.OnApplyStyleLookup := DoItemApplyStyleLookup; aItem.Tag := I; end; end; как-то так
-
Равиль Зарипов (ZuBy) получил реакцию от Rusland в ColorComboBox произвольный список цветов
Внутри TComboBox используется TListBox
Cамый простой способ
кинуть на форму TListBox ПКМ Add TListBoxItem выбрать нужный стиль для Item (StyleLookup) ПКМ по Item Edit Custom Style меняем что нужно в стиле и сохраняем применяем новый стиль к Item -
Равиль Зарипов (ZuBy) отреагировална denprox в ColorComboBox произвольный список цветов
Спасибо большое!! Я был близок, подправил несколько строк, теперь все отлично!