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

Barbanel

Пользователи
  • Постов

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

  • Посещение

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

    36

Сообщения, опубликованные Barbanel

  1.  

    24 минуты назад, Alisson R Oliveira сказал:

    ModernListView pas использует функции, которых он не имеет в версии Fmx.Bind.Editors в Берлине

    1) Попробуйте найти версию ModernListView для Berlin
    2) Обратитесь к автору
    3) Удалите несуществующие функции сами

  2. 2 минуты назад, Alisson R Oliveira сказал:

    Существует только один файл «Fmx.Bind.Editors»

    FMX.ListView тоже только один?
    Вы уверенны?
    Проверьте, поищите оба файла по всем путям, доступным Delphi.

    Возможно у вас установлено несколько версий Delphi. Проверьте пути в таком случае.

  3. 36 минут назад, Vitaldj сказал:

    Ярослав рассказывал, что можно. Каким то образом нужно запустить нативный xcode, сделать пустое приложение, там что то сгенериться и далее что то отправить на сайт, для генерации бесплатного серта... Просто Ярославу сейчас некогда, а я не хотел его отвлекать этим вопросом. Он фреймворк пилит упорно...

    Где-то проскакивал коммент, что это больше не работает, да и само это сообщение Ярослава я не нашел.

  4. Попробуйте учитывать Screen.PixelsPerInch
    На обычном компе без системного масштабирования Screen.PixelsPerInch = 96.
    При 150% машстабировании (для 4к дисплеев например) Screen.PixelsPerInch=96*1.5=144
    Возможно у вас масштабирование больше чем 150% (я с таким не сталкивался, но может десятка так умеет, я хз). В любом случае, Screen.PixelsPerInch должно возвращать вам это значение.
    Учитывайте его при пересчете координат, примерно так:

    // нужное значение
    Form1.Left := 100;
    Form1.Top  := 100;
    
    // пересчитываем координаты
    Form1.Left := Form1.Left * Trunc(Screen.PixelPerInch / 96);
    Form1.Top  := Form1.Top  * Trunc(Screen.PixelPerInch / 96);

     

  5. 20 часов назад, Alisson R Oliveira сказал:

    dcc32 Fatal Error] xx.pas (16): F2051 Блок Fmx.Bind.Editors был скомпилирован с другой версией FMX.ListView.TCustomListView

    Данная ошибка не означает что Live Bindings глючная.

    Возможны два варианта.

    1) Вы используете локализацию.
    Такое сообщение означает, что локализованная версия одного из pas-файлов отличается от основной версии.
    К сожалению, встречается ситуация, когда Embacadero модифицирует основную ветку кода, добавляет новые константы, а в локализованной ветке эти константы добавить забывает.
    Вам нужно найти эти файлы и привести к единому виду.

    2) Вы сами (либо люди, которые работали над проектом до вас) модифицировали эти файлы. Решение проблемы - аналогично пункту 1.

    Удачи!

    PS. настоятельно рекомендуется после исправления сделать очистку проекта от временных dcu файлов.
    В дереве проектов выбрать главный .dpr -> клик правой кнопкой мышки -> Clear

  6. 19 часов назад, CyberStorm сказал:

    Спасибо! Надеюсь до нового года разработчики выпустят новый пасервер. А еще один вопрос - а для реального устройства нужно ли приобретать сертификат разработчика, или можно обойтись без него?

    Увы, нужно.

    Я долго бился без сертификата, искурил все форумы какие нашел. Не запускалось на устройстве ни в какую. Компилировалось, но не запускалось. Как только купил сертификат, обновил данные в xCode, сразу все завелось.
    Если и существует способ запустить без сертификата, я его не нашел, хоть искал весьма упорно (джейлбрейки не рассматривал, девайсы принадлежат фирме).

  7. 1 час назад, x11 сказал:

    У TItgMessage есть свойство "&Type", не знаю, зачем разработчики сделали с "&"

    Потому что слово "Type" - зарезервированное слово для объявления типов.

  8. 2 минуты назад, Alex7wrt сказал:

    Смысл в том, что оперируя тем же логическим размером экрана, ПО автоматически отрисовывает изображение на другом физическом разрешении.

    Во, шикарное пояснение!!!
    Я все ломал голову, как это выразить)

  9. 31 минуту назад, Юрий Гусач сказал:

    Интересно, как получить коэффициент масштабирования во время работы программы(у пользователя может быть любое устройство). 

    Этот код был на этом форуме. Смотрите переменную sScale

      if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then
      begin
        sScreenSize := ScreenService.GetScreenSize.Round;
        sScale := ScreenService.GetScreenScale;
        DeviceInfo.diScreenLogic := FloatS(sScreenSize.x) + ' x ' + FloatS(sScreenSize.y);
        DeviceInfo.diScreenPhis := FloatS(sScreenSize.x * sScale) + ' x ' + FloatS(sScreenSize.y * sScale);
        DeviceInfo.diScreenWidth := sScreenSize.x;
        DeviceInfo.diScreenHeight := sScreenSize.y;
        DeviceInfo.diScale := sScale;
      end;

     

    31 минуту назад, Юрий Гусач сказал:

    И все-таки было бы очень интересно узнать, что именно добиваются разработчики Fire monkey под Андроидом урезанием разрешения экрана.

    Одно из наших приложений, в архиве чуть побольше фоточек чтобы вы убедились что все действительно хорошо. Ну, заодно и критику от коллег смогу услышать))
    PS. не обращайте внимания на язык, так задумано)
    приложение делается для школ Германии.

    SMALL_1.thumb.jpg.3ab572a648ce9abe8234b87d2cf892c0.jpg

    Screens.zip

  10. Так внешний вид абсолютно нормальный получается. Нужно лишь подготовить ресурсы для каждого коэффициента, но это везде так.

    Я сейчас не на рабочем месте, могу завтра показать как это выглядит на разных устройствах.

    Почему два а не три - роли не играет. Этот коэффициент можно получить, если необходимо.

  11. Это происходит из-за масштабирования.

    В вашем случае, коэффициент масштабирования равен 1.5
    По ширине если перемножить 320 на 1.5 как раз получится паспортные 480.
    По высоте должно тоже получиться, но у вас скорее всего форма не на полный экран, поэтому сжирается честь места сверху для статусбара и снизу для кнопок назад, домой, и список приложений.
    Мне доводилось работать с устройствами на которых были такие коэффициенты
    1.5 - древнющий беспонтовый ACER, разрешение экрана не помню
    2.0 - ветеран Nexus 4, разрешение 1280х720
    3.0 - Huawei p8 lite 2007, разрешение 1920х1080

    Со всеми этими устройствами дельфи работает без проблем, масштабирование не приносит сколь-нибудь значимых проблем.

    45 минут назад, Юрий Гусач сказал:

    можно ли как то это обойти?

    Расскажите, с какой целью?

  12. 14 часов назад, d7d1cd сказал:

    Правильно ли я понимаю, что они предназначены для доступа к API андроида?

    Правильно.

    14 часов назад, d7d1cd сказал:

    эти файлы предоставляют доступ ко всему API?

    Насколько я знаю, не ко всему. Конкретный пример вспомнить не смогу, но некоторые вещи приходится тащить отдельно.
    Также, некоторые вещи проще написать на Java и потом импортировать эти библиотеки в FMX.

    Однако, бОльшая часть необходимых процедур апи - в наличии, этого вполне достаточно чтобы собрать полноценное приложение со средними я бы сказал запросами.

  13. 1) Было что-то не так со стилем. Удалил из стилей все элементы, кроме двух простейших прямоугольников для background. После этого ошибка более не проявлялась.
    2) Убедился что стиль для андроида доступен на устройстве, и нужные объекты присутствуют.

    Действительно, под Андроид данный код не работает, и стили здесь ни при чем.
    Что характерно, форма не обновляется, если ей присвоить новый стиль в рантайме. Внешний вид формы остается прежним.
    Если вместо формы использовать например панель - стиль меняется.

    Изменить цвет заливки конкретно в ресурсе у меня не удалось.
    Это работает стандартным образом:

        AObject := Panel1.FindStyleResource('backgroundrect');
        if (AObject is TRectangle) then
            TRectangle(AObject).Fill.Color := TAlphaColorRec.Yellow;

    Если позарез нужно менять стиль формы в рантайме - положите на нее панель с align=alClient, и меняйте стиль панели.
    Попробуйте, может вас устроит такой способ.

    И да, расскажите, для чего вы меняете цвет именно в ресурсе, а не в примененном стиле объекта.
    Мне правда интересен такой кейс.

  14. Верно, нету. Поэтому студия считает что стиль дефолтный и только (если не ошибаюсь) для Виндовс.

    -сделайте копию проекта (на всякий),
    -откройте редактор стилей
    -удалите оттуда все стили
    -добавьте два стиля из архива

    В результате у вас должно появиться по одному стилю для Виндовс и Андроид. Стурктура в них одинаковая, различаются они лишь объектом TStyleDescription.
    Откройте стиль в блокноте и увидите сами.

    Попробуйте запустить программу под андроидом, должно заработать.

    PS у меня были случаи когда этот объект исчезал при сохранении стиля в файл. В таком случае я открываю стиль в блокноте, вставляю этот объект ручками и потом снова загружаю этот стиль.

    mystyles.zip

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