Перейти к содержанию
Fire Monkey от А до Я

Равиль Зарипов (ZuBy)

Модераторы
  • Постов

    2 517
  • Зарегистрирован

  • Посещение

  • Победитель дней

    264

Активность репутации

  1. Like
    Равиль Зарипов (ZuBy) отреагировална Error в [Статья] VCL, избавляемся от мерцания, раз и навсегда   
    Ссылка: https://habrahabr.ru/post/318876/
    Автор: Error
    Описание:
    Delphi и C++Builder разработчики, использующие VCL не по наслышке знают о вездесущей проблеме мерцания контролов.
    Мерцание происходит при перерисовке, вследствие того, что сначала отрисовываеться фон компонента, и только потом сам компонент.
    И если в случае с наследниками от TWinControl частичным решением проблемы является установка свойства DoubleBuffered в True, что заставляет контрол отрисовываться в буфере(однако DoubleBuffered работает тоже не идеально, к прим.: контрол перестает быть прозрачным), то в случае с TGraphicControl решение с DoubleBuffered просто невозможно, из-за отсутствия у TGraphicControl окна, установка же DoubleBuffered в True у родителя не помогает, из-за того что отрисовка вложенных TGraphicControl-ов происходит уже после прорисовки родителя в буфере.
    Обычно остается только одно — смириться с мерцанием, и максимально упростить отрисовку для минимизации эффекта, или использовать по возможности исключительно TWinControl-ы, что не всегда возможно и удобно.
    Однажды намучившись с мерцанием, я не выдержал и решил решить эту проблему, раз и навсегда!
    ...
  2. Like
    Равиль Зарипов (ZuBy) получил реакцию от Rusland в Определить тип устройства   
    // uses FMX.Platform, FMX.PhoneDialer function DialerSupport: boolean; var FPhoneDialerService: IFMXPhoneDialerService; begin Result := false; if TPlatformServices.Current.SupportsPlatformService(IFMXPhoneDialerService, FPhoneDialerService) then Result := true; end;  
  3. Like
    Равиль Зарипов (ZuBy) получил реакцию от Kitty в Насколько хорош FMX для iOS?   
    вот вы часто используете нативные контролы и какие? браузер и карты не считаем, они кросс
    опять же повторюсь, что у айос почти нет фрагментации по сравнению с андроид
    про какие костыли вы говорите?
     
  4. Like
    Равиль Зарипов (ZuBy) получил реакцию от Kitty в В чем смысл компонента TMultiView?   
    это кроссплатформенный компонент позволяющий без гемора делать "меню" на разных платформах.
    достаточно выставить Mode = PlatformBehaviour и запустить на разных платформах
  5. Like
    Равиль Зарипов (ZuBy) получил реакцию от Kitty в Поиск сервера   
    даже в теории сервер на мобиле не должен быть)
    может кто пользуется (я нет) оф. приложение фейсбука и есть сервер.
    в теории: 3rd party приложения общаются не с сервером (api facebook.com), а приложением установленным в телефоне через SDK.
    что в реале: батарейка улетает в 0, дробление единого сервиса на несколько приложении (имхо)
     
  6. Like
    Равиль Зарипов (ZuBy) получил реакцию от krapotkin в Насколько хорош FMX для iOS?   
    т.к. фрагментация у IOS небольшая в отличии от Android можно по ошибке сказать что там приложения работают лучше.
    если выбрать десять девайсов на андроиде с нормальными характеристиками (процом!), то приложения будут работать +/- одинаково
    ну и зависит еще от используемых технологии и компонентов. из-за неправильной архитектуры приложения, создаются костыли и темы на форуме)
     
  7. Like
    Равиль Зарипов (ZuBy) отреагировална Brovin Yaroslav в Описание TfgImageList   
    Первый набросок компонента, позволяющего организовать централизованное хранение графических ресурсов для всех платформ.
    Основные особенности:
    Спроектирован для использования одного экземпляра изображения во многих компонентах. Позволяет хранить все графические ресурсы любых размеров. В будущем не будет грузить картинки в память, если они не используются. А будет подгружать их из файла по мере необходимости. Тем самым будет значительно экономиться память. Хранение именованных графических ресурсов, а не по индексу. Это позволяет отразить в названии назначение картинки. Использование папок. Группировка изображений по смыслу для удобства работы с ними. Возможность загрузки разных картинок для разных устройств, или же загрузить один набор картинок для всех устройств. Удобная и быстрая загрузка изображений путем перетаскивания Хранение отступов изображения.  Наглядное отображение картинки в свойствах компонентах. При изменении имени картинки, в компонентах используемых картинку идет автоматическое обновление имени картинки. В стандартном TImageList, из-за индексной структуру все картинки съезжают и при удалении картинки, компонент начинает отображать уже другую картинку.


  8. Like
    Равиль Зарипов (ZuBy) отреагировална Brovin Yaroslav в Описание TfgRegularPolygon   
    Описание
    Назначение: Компонент предназначен для отображения правильного многоугольника.  Поддерживаемые платформы: Windows, OSX, iOS, Android Демо проект: Samples\RegularPolygonDemo\RegularPolygonDemo.dproj Возможности
    Округление к физическим пикселям - TfgRegularPolygon.AlignToPixels Количество сторон - TfgRegularPolygon.SidesCount Настройка цвета границы - TfgRegularPolygon.Stroke Настройка заливки - TfgRegularPolygon.Fill
  9. Like
    Равиль Зарипов (ZuBy) отреагировална AngryOwl в Мультиязычность в приложении   
    Я вот тут (с примерами) тоже предлагал свое "видение" этого вопроса.
  10. Like
    Равиль Зарипов (ZuBy) отреагировална Brovin Yaroslav в Описание TfgRatingBar   
    Описание
    Назначение: Компонент предназначен для отображения и ввода голоса. Поддерживает стилизацию.  Поддерживаемые платформы: Windows, OSX, iOS, Android Демо проект: Samples\RatingBarDemo\RatingBarDemo.dproj  
    Возможности
    Стилизация через указание двух картинок отображающих голос и пустой голос Общее количество "звезд" - TfgRatingBar.TotalCount Текущее значение голоса - TfgRatingBar.Rating Возможность указывать дробное значение голоса Возможность указать шаг изменения голоса TfgRatingBar.StepSize Поддержка Tint эффекта - TfgRatingBar.TintColor Автоматический размер - TfgRatingBar.AutoSize Режим только отображения - TfgRatingBar.ReadOnly Событие окончательного изменения рейтинга (отжатие пальца от экрана или кнопки мышки) - TfgRatingBar.OnChange Событие в процессе изменения рейтинга - TfgRatingBar.OnChanging
     
  11. Like
    Равиль Зарипов (ZuBy) получил реакцию от Rusland в [ListBox] загрузка картинок   
    @AlexG я проверил то что вы описали. в принципе работает, но для статики
    почему не работает для динамической подгрузке, точней не совсем работает. 
    порядок действий
    1) получаю с сервера список картинок
    2) заполняю текстом Item'ы
    3) присваиваю событие OnApplyStyleLookup для Item'а
    4) в событии ItemApplyStyleLookup пишу следующее
    procedure TForm13.ItemApplyStyleLookup(Sender: TObject); begin LoadBitmapFromURL((Sender as TListBoxItem).TagString, (Sender as TListBoxItem).ItemData.Bitmap); end; как видим на картинках несколько айтемов не обновились, т.к. они не могут выйти за пределы области (чтобы обнулить стиль и вызвать событие OnApplyStyleLookup)
    и при таком подходе все время картинка будет скачиваться из интернета, что не есть хорошо
    UPDATE: добавил проект
    LB_dload.zip
  12. Like
    Равиль Зарипов (ZuBy) получил реакцию от Алмаз Амангельды в VK API и Delphi   
    У меня на гите есть пример TRestLight и здесь на форуме тоже, через TRestClient, воспользуйтесь поиском
  13. Like
    Равиль Зарипов (ZuBy) получил реакцию от Steepe_Hare в TRESTLight - облегченная версия   
    да, это от IE, кастомизировать нельзя его и не нужно, даже если возможно. Иначе будет недоверие пользователей к стандартному способу авторизации через OAuth
  14. Like
    Равиль Зарипов (ZuBy) получил реакцию от Steepe_Hare в TRESTLight - облегченная версия   
    это версия ВК апи, поменяете если какой-то метод просит более новую версию
  15. Like
    Равиль Зарипов (ZuBy) получил реакцию от Steepe_Hare в TRESTLight - облегченная версия   
    думаю можно.
    при получении токена там еще отдается время до которого будет валиден токен.
    пока этот токен валиден, его можно указывать в апи, как только время прошло нужно снова запросить
  16. Like
    Равиль Зарипов (ZuBy) получил реакцию от Steepe_Hare в TRESTLight - облегченная версия   
    Доброго времени суток!
    Навеяно этой темой.
    Посмотрел реализацию от @Pax Beach (за что ему спасибо большое) и столкнулся с тем что TRESTClient со всеми потрахами это просто дикий ужас.
    Решил собрать аналогичный пример, только не использовать TREST***
    немного опишу, свою реализацию
    uAppSettings.pas - хранит описание вашего приложения созданного в ВК  FMX.RESTLight.pas - модуль "общения" клиента с сервером FMX.RESTLight.Types.pas - тут хранятся типы для работы TRESTLight Приведу код, который постит Вам на стену текст
    var aFields: TArray<TmyRestParam>; aJSON: string; begin SetLength(aFields, 5); aFields[0] := TmyRestParam.Create('access_token', FAuthToken.token, false); aFields[1] := TmyRestParam.Create('v', FVKApp.APIVersion, false); aFields[2] := TmyRestParam.Create('owner_id', FAuthToken.user_id, false); aFields[3] := TmyRestParam.Create('friends_only', '0', false); aFields[4] := TmyRestParam.Create('message', 'Тестовое сообщение <RESTLight>', false); TTask.Run( procedure begin aJSON := TRESTLight.Execute('wall.post', FVKApp, aFields); TThread.Synchronize(TThread.CurrentThread, procedure begin Memo1.Lines.Add('---- wall.post ----'); Memo1.Lines.Add(aJSON); end); end); а вот так можно заливать файлы
    var aFields: TArray<TmyRestParam>; aJSON: string; begin SetLength(aFields, 4); aFields[0] := TmyRestParam.Create('access_token', FAuthToken.token, false); aFields[1] := TmyRestParam.Create('v', FVKApp.APIVersion, false); aFields[2] := TmyRestParam.Create('owner_id', FAuthToken.user_id, false); aFields[3] := TmyRestParam.Create('photo', aUploadFile, true); // для файлов указывается !!!true!!! TTask.Run( procedure begin // для загрузки файлов использовать TRESTLight.Execute2, в нем можно указать произвольный URL aJSON := TRESTLight.Execute2(aUploadURL, FVKApp, aFields); TThread.Synchronize(TThread.CurrentThread, procedure begin Memo1.Lines.Add('---- upload file to server ----'); Memo1.Lines.Add(aJSON); end); end); P.S. На правильность и оригинальность не претендую, просто альтернативный вариант. Мне например не понравилась как устроен TRESTClient, много компонентов лишних. В боевых условиях наверное код еще будет модернизироваться, я рассмотрел только пару методов, но думаю общая концепция не сильно поменяется
    GitHub   TRESTLight.zip
  17. Like
    Равиль Зарипов (ZuBy) получил реакцию от AngryOwl в VK API и Delphi   
    У меня на гите есть пример TRestLight и здесь на форуме тоже, через TRestClient, воспользуйтесь поиском
  18. Like
    Равиль Зарипов (ZuBy) отреагировална AngryOwl в С Наступающим Новым Годом!   
    Присоединяюсь!
    Желаю всем здоровья, благополучия и успехов в работе и личной жизни!
    С наступающим Новым Годом!
  19. Like
    Равиль Зарипов (ZuBy) отреагировална krapotkin в [ListBox] загрузка картинок   
    думаю, листбокс не мертв, просто он предназначен для максимум - менюшку нарисовать
  20. Like
    Равиль Зарипов (ZuBy) получил реакцию от egorea1999 в [ListBox] загрузка картинок   
    @AlexG я проверил то что вы описали. в принципе работает, но для статики
    почему не работает для динамической подгрузке, точней не совсем работает. 
    порядок действий
    1) получаю с сервера список картинок
    2) заполняю текстом Item'ы
    3) присваиваю событие OnApplyStyleLookup для Item'а
    4) в событии ItemApplyStyleLookup пишу следующее
    procedure TForm13.ItemApplyStyleLookup(Sender: TObject); begin LoadBitmapFromURL((Sender as TListBoxItem).TagString, (Sender as TListBoxItem).ItemData.Bitmap); end; как видим на картинках несколько айтемов не обновились, т.к. они не могут выйти за пределы области (чтобы обнулить стиль и вызвать событие OnApplyStyleLookup)
    и при таком подходе все время картинка будет скачиваться из интернета, что не есть хорошо
    UPDATE: добавил проект
    LB_dload.zip
  21. Like
    Равиль Зарипов (ZuBy) получил реакцию от Kitty в [ListBox] загрузка картинок   
    @AlexG я проверил то что вы описали. в принципе работает, но для статики
    почему не работает для динамической подгрузке, точней не совсем работает. 
    порядок действий
    1) получаю с сервера список картинок
    2) заполняю текстом Item'ы
    3) присваиваю событие OnApplyStyleLookup для Item'а
    4) в событии ItemApplyStyleLookup пишу следующее
    procedure TForm13.ItemApplyStyleLookup(Sender: TObject); begin LoadBitmapFromURL((Sender as TListBoxItem).TagString, (Sender as TListBoxItem).ItemData.Bitmap); end; как видим на картинках несколько айтемов не обновились, т.к. они не могут выйти за пределы области (чтобы обнулить стиль и вызвать событие OnApplyStyleLookup)
    и при таком подходе все время картинка будет скачиваться из интернета, что не есть хорошо
    UPDATE: добавил проект
    LB_dload.zip
  22. Like
    Равиль Зарипов (ZuBy) отреагировална #WAMACO в С Наступающим Новым Годом!   
    С Новым годом! Удачи, здоровья, всех благ!
  23. Like
    Равиль Зарипов (ZuBy) отреагировална Kitty в С Наступающим Новым Годом!   
    Шарик ветром развернуло.
    С Новым Годом!

  24. Like
    Равиль Зарипов (ZuBy) отреагировална Error в С Наступающим Новым Годом!   
    С новым годом!
  25. Like
    Равиль Зарипов (ZuBy) отреагировална Andrey Efimov в С Наступающим Новым Годом!   
    Уважаемые форумчане!
    Поздравляю Вас с Наступающим Новым Годом и Рождеством!
    Пусть 2017 год станет новым этапом на Вашем пути и принесет успех, самореализацию и, конечно же, счастье.

×
×
  • Создать...