Таблица лидеров


Популярный контент

Показан контент с высокой репутацией за 09.12.2018 во всех областях

  1. 5 баллов
    Slym

    Артефакты на экране (Android)

    Боролись как-то с артефактами отображения (мы их прозвали "крокодилами" из-за сходства на первом скриншоте с этим багом)... Могли отображаться также левые спрайты, или обрезки скролившихся контролов... Коллега выяснил что не надо трогать Form.Fill, из-за переключения в недрах FMX нативной и не нативной канвы: если нужен фон - брось Rect по контенту и в нем делай заливку...
  2. 3 балла
    beeoz

    TExpander глюки при при isExpanded=False

    Проблема сохранилась и в IDE Delphi Rio 10.3 . Причиной оказалось то, что в модуле FMX.StdCtrls в процедуре TExpander.UpdateControlSize указана переменная FContentHeight вместо FContent.Height procedure TExpander.UpdateControlSize(const ChangingState: Boolean); begin FChangingState := ChangingState; try if FIsExpanded then begin FContent.Visible := FIsExpanded; if FButton <> nil then Height := FButton.Height + FContent.Height; // здесь заменил FContentHeight на FContent.Height и заработало Repaint; end else begin Repaint; FContent.Visible := FIsExpanded; if FButton <> nil then Height := FButton.Height; end; finally FChangingState := False; end; end;
  3. 2 балла
    Barbanel

    Изменение разрешения экрана

    Из-за логического масштабирования. Вот здесь описано про это подробнее.
  4. 2 балла
    Maka

    Работа с TInAppPurchase

    добавление поддержки подписки в FMX: http://delphitoptips.blogspot.com/2018/03/supporting-in-app-purchase.html
  5. 2 балла
    Хм. Сорри. Проблема есть. Но только на дефолтном стиле. Если загрузить какой-то стиль - проблема исчезает. Так что проблема не в FMX а в дефолтном стиле.
  6. 2 балла
    krapotkin

    Размеры TPanel

    во время FormCreate еще не определены размеры лучше в OnShow, или OnResize
  7. 2 балла
    По итогу месяца работы на FMX хочу сказать - это глюкодром адский!:)) Вернулся бы обратно на VCL, но жаль потраченного месяца работы :)) Несколько моментов, может кому будет интересно, кто пойдет по этому пути перевода проекта с VCL: 1) рисование в буфере перед выводом на PaintBox (знаю что не обязательно, но именно в моей проге нужно, разные куски картинки готовятся в разное время) Инфы в одном месте не найти. Даже на этом форуме она не полна и в одном месте ошибочна:) XScale := GetWndScale(FormToHWND(OwnerForm)); // только так! Другие методы получения Scale не работают при // перетаскивании проги на другой монитор. w:=trunc(XScale * Image.Width); h:=trunc(XScale * Image.Height); // при перетаскивании на второй мониторе с другим масштабом Image.Width и Image.Height могут станут неверными. // Помогает только пересоздание хэндла формы (баг) If (bm.Width<>w) or (bm.Height<>h) then bm.SetSize(w,h); bm.Canvas.BeginScene; bm.Canvas.SetMatrix(TMatrix.CreateScaling( XScale, XScale) * Matrix); 1.1) Как нарисовать линию толщиной 1 пиксель? Этот простой вопрос отнял у меня пол дня:) Пришлось править код FMX.Canvas.D2D, по-другому никак не отключить антиалиасинг в битмапе. На форме его можно отключить свойством Quality, вот только его значения перепутаны - HighQuality на самом деле означает худшее качество с размытой графикой. Даже после отключения AA нужна еще 1 хитрость - чтобы линия (горизонтальная или вертикальная) получилась толщиной ровно 1 пиксель, у меня получился примерно такой код procedure TCanvasHelper.LineToPix(xFrom, yFrom, xTo, yTo, Opacity: single); var pFrom, pTO: TPointF; xs: single; begin xs := Max(1, Matrix.m11); If xs > 1.1 then begin pFrom := PointF(xFrom, yFrom).Round; pTO := PointF(xTo, yTo).Round; end else begin pFrom := PointF(round(xFrom) + 0.5, round(yFrom) + 0.5); pTO := PointF(round(xTo) + 0.5, round(yTo) + 0.5); end; Stroke.Thickness := 1/xs; DrawLine( pFrom, pTO, Opacity); end; 2) Шрифты. Это жуть!:) Впрочем об этом пишут везде. Заставить в D2D канве (винда) работать ClearType не удалось (хотя при рисовании в битмапе как написано выше он у меня заработал, путем очередной правки FMX.Canvas.D2D. Надо еще отметить, что править системные коды я никогда не любил, и на VCL приходилось всего 1 раз, тут же у меня исходники очень быстро лишились девственности:)) 2.2) Шрифты и так выглядят не очень, но еще круче их портит свойство TAlign.Scale, из-за которого позиции контролов принимают не целые значения. Просто киньте на форму пару Label'ов с TAlign.Scale , запустите и начните медленно растягивать, наблюдая как мерцают и размыливаются буковки:)) Вообще по итогу шрифты оказались самым неприятным моментом, все остальное кое-как правится, кроме внешнего вида приложения с замыленными шрифтами... (отключать D2D канву не предлагать!) Почему не доделали SetTextRenderingParams в FMX.Canvas.D2D.pas, почему не работает SetTextAntialiasMode - для меня пока загадка. 3) Сворачивание приложения кликом по таскбару. Оно не работает:) (Почему за столько лет существования FMX никто этого не заметил? всем плевать, или никто не пользуется?) Да, на форуме есть пара решений, но они не идеальны, если у вас внимательные юзеры, они обязательно заметят странное мелькание приложения при разворачивании. Очередная правка системных кодов. 4) FMX.TrayIcon.Win - штатного нет, но код выложенный на этом форуме работает идеально. Респект его автору. С ужасом думаю, что буду делать на MacOS..:) 5) Если в TEdit нажать CTRL-V при пустом буфере, вылезает AV:) Правится не сложно, но блин, очередной системный юнит легко лишился девственности:)) 6) Выделение дабл-кликом на TEdit не работает..... (10.3) Хорошо что FMX.Edit.pas уже лежит в папке с проектом, долго искать не пришлось:)) 7) А на этот с виду несложный вопрос я так и не нашел ответа..
  8. 1 балл
    Barbanel

    Анимированная смена форм

    Мы используем TTabControl с отключенным отображением вкладок. Каждая вкладка имитирует свое окно. Порядок следования вкладом можно менять на лету. Методы Next() и Previous() анимированно показывают следующую/предыдущую вкладку.
  9. 1 балл
    Tokyo, Rio 3000 кнопок - всё отлично работает.
  10. 1 балл
    Не знаю, я как то переводил старое VCL приложением на FireMonkey, все прошло очень гладко, добавил новых "красивых" фич! Были вопросы, но они все замечательно решились. Клиенты довольны! Странно, что у вас опыт отрицательный.
  11. 1 балл
    Равиль Зарипов (ZuBy)

    Создание канала для Пуша

    http://docwiki.embarcadero.com/Libraries/Rio/en/System.Notification.TCustomNotificationCenter.CreateChannel
  12. 1 балл
    Равиль Зарипов (ZuBy)

    [Андроид] TAniIndicator

    https://github.com/rzaripov1990/ZMaterialComponents
  13. 1 балл
    Tumaso

    Обновить приложение

    @Anatoliy сначала удалите текущую версию - мышкой подвести к колонке даты/времени текущей сборки, появится круглая красная иконка удаления. нажать и сборка удалится. после этого выбрать новую сборку - там и будет ваша новая версия. выбираете ее и отправляете на проверку
  14. 1 балл
    Alex7wrt

    [Андроид] TAniIndicator

    Равиль Зарипов написал модуль для ровной отрисовки под Android, который здесь используется. Поищите по запросу FMX.ZNativeDrawFigure
  15. 1 балл
    Tumaso

    Обновить приложение

    @Anatoliy сорри, я видимо наверное не правильно понял тебя. В консоли AppStore, когда загружаешь новую версию, нужно старый пакет удалить и там же выбрать пакет с новой версией. После этого отправляешь на проверку. После проверки, если она будет успешна, приложение обновится в магазине AppStore. Клиентам же оно попадет не сразу, тут нужно будет просто подождать.
  16. 1 балл
    Tumaso

    Обновить приложение

    Просто нужно подождать.
  17. 1 балл
  18. 1 балл
    x11

    [FGX Native] Большие новости с полей

    FGX Native новейшая кроссплатформенная библиотека для мобильной разработки на Delphi (Ярослав Бровин) https://youtu.be/0tF5J-jIVzc
  19. 1 балл
    Равиль Зарипов (ZuBy)

    Http client server

    вы не понимаете задачу которую хотите решить, читайте мануалы
  20. 1 балл
    Равиль Зарипов (ZuBy)

    Реестр в Андроиде и Delphi

    Не будет работать конечно, куда ещё больше портабл, если пакет андроид приложения это один файл
  21. 1 балл
    Виталий Иванов

    Audio Streaming

    Теперь есть отправная точка как это должно, теперь буду дальше эксперементировать. Нужно сделать теперь ещё сервер для того что бы это работало через NAT и проверить работу на Android
  22. 1 балл
    Alex7wrt

    [Андроид] TAniIndicator

    Тогда TZNativeDrawFigureArc замените на TArc. Может на ваших целевых устройствах будет нормально отрисовываться.
  23. 1 балл
  24. 1 балл
    Нужно указывать api key а не цифровой id
  25. 1 балл
    Введение Появление экранов повышенной плотность физических точек, привело с одной стороны к проблеме адаптации графического интерфейса под разные разрешения экранов при их одинаковых физических размерах, с другой к увеличению четкости и качества картинки. Например, если раньше на iPhone 3 при размере экрана 3,5 дюйма позволял отобразить 320х480 точек, то на устройстве iPhone 4 при таком же физическом размере экрана, экран мог уже отображать 640х960 точек. Это хорошо видно на увеличенном изображении обычного экрана и ретина экрана на рисунке ниже (слева - не ретина, справа - ретина (2х)). Справа количество физических точек ровно в четыре раза больше, чем слева: Для разработчика это могло означать, что интерфейс привязанный к разрешению 320х480 на Retina экране будет занимать только четверть экрана. Естественно, что использование разрешения экрана в физических координатах не удобно с этой точки зрения. Именно по этому появились логические координаты, которые гарантируют, что тот же пользовательский интерфейс для iPhone 3, будет иметь такие же размеры (физические) и на экране с ретиной. FireMonkey работает в логических координатах. Это означает, что на iPhone 3 - 4 мы работаем с логическим разрешением 320x480 точек. Однако, при отображении интерфейса на iPhone 4 c (с двойной плотностью пикселей по сравнению с iPhone 3), интерфейс автоматически масштабируется на физическое разрешение 640х960 с коэффициентом масштабирования равным 2. Практика Теперь посмотрим, как получить всю эту информацию. Вся информация об экране (логический размер и коэффициент масштабирования) находится в сервисе IFMXScreenService. Чтобы получить физическое разрешение экрана, нужно логический размер умножить на коэффициент масштабирования. Код ниже показывает, как получить доступ к этому сервису и извлечь требуемые параметры: var ScreenService: IFMXScreenService; LogicScreenSize: TPoint; ScreenScale: Single; begin // Запрашиваем сервис экрана, для получения информации о размере и текущем коэффициенте масштабирования if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then begin LogicScreenSize := ScreenService.GetScreenSize.Round; ScreenScale := ScreenService.GetScreenScale; LabelLogicScreenSize.Text := Format('Логический размер: %d, %d', [LogicScreenSize.X, LogicScreenSize.Y]); LabelPhysicScreenSize.Text := Format('Физический размер: %f, %f', [LogicScreenSize.X * ScreenScale, LogicScreenSize.Y * ScreenScale]); LabelScreenScale.Text := Format('Коэффициент масштабирования: %f',[ScreenService.GetScreenScale]); end; end; Результат кода приведен на снимке экранов ниже для iPad устройств с ретиной экраном и без:
Эта таблица лидеров рассчитана в Москва/GMT+03:00