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

Akad

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

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

  • Посещение

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

    2

Весь контент Akad

  1. Стандартные парсеры что xml, что json от эмбы абсурдно усложнены, не стабильны и постоянно плюются эксепшенами. Лучше использовать что-то стороннее, нормальное. На гитхабе полно реализаций.
  2. С асинхронностью все печально. Ну то есть использовать можно, но отгрести всевозможных проблем на машинах пользователей тоже... Поэтому лучше отдельный поток и callback. Причём эта практика самая распространённая на всех платформах и api. Synchronize, а дальше делай что хочешь. В XE 10.x.x будут проблемы в некоторых случаях, но на более ранних всё работало отлично.
  3. Вы реально используете такой код? Небось на 3G соединениях ещё не тестировали... Жуть. (почти) все обращения к api потоко-независимы. А вот если одновременно из двух потоков сделать memo1.lines.add(..) то будет в лучшем случае бред в результате, в худшем - AV.
  4. Кроме TMS - всё мимо. devart - это работа с бд напрямую, что само посебе является шизофренией. HTML - это ну очень узкая область применения. А альфаконтроллс - единственная нормальная возможность скины натягивать бесплатно. Причём отлично работающая. Да и пара компонент там удобных есть. По остальным - как допилят - можно будет что-то говорить. Сейчас этого нет. Чушь, что есть wine, под которым даже некоторые игры требующие DX11 идут без проблем, а уж поделка на win api из 90-х и подавно? Ну-ну.
  5. Где? Есть только куча однотипной дряни, типа расширенного 10 разными людьми ListView, глючащих по разному у разных авторов. Где девэкспресс или альфаконтроллс, где хотя бы простейший ричедит? Пока только 1 серьёзный производитель выпустил что-то под fmx, на сколько мне известно. P.S. Смысл crossvcl без мобильных платформ не понятен. На линуксе и маке есть вайн. Точка.
  6. 1. Тормоза. Старт до логина, т.е. до первого практически пустого экрана от 3 сек. на телефоне типа S8 до 10-12...сек на менее "крутых". На вёдрах с 512 оперативки и параллельным существованием какого-нибудь монстра типа whatsapp программу можно даже не пытаться запускать. Там каждое действие обрабатывается секунд по 3-5. 2. Бесконечные глюки UI. Даже на тестовом асусе периодически ловлю просто белый экран, который не оживает. А уж на китайцах курьеров ТАКОЕ происходит, что вообще... 3. ОЧЕНЬ странная работа сервиса, который банально отсылает на сервер текущее местоположение курьера. Даже переписав его почти полностью на яве - работает через пень-колоду. Ну и стандартные глюки: не работа некоторых компонент, которые приходится заменять другими, глюки событий тача и т.д. Я тоже пока не начал внедрение, думал что как всё круто сейчас на базе существующего кода для win клиента заделаю приложение для курьеров. Писал я его действительно дня 2-3. А потом началась отладка.... Потеряв недели 3+ я понял, что быстрее с нуля написать на чём-то нативном, чем заставить работать ЭТО. Следующем, судя по всему, будет замена FMX на VCL в win клиенте. Причём на что-то стабильное типа XE2-XE4. Но это пока обсуждается. Поэтому конечно FGX Native интересен, но я как-то скептично настроен. Надеюсь, что я ошибаюсь, и продукт выйдет классный.
  7. Во-первых это очень важно людям с 4Гб флешкой на борту. А во-вторых не может 50Мб программа быстро стартонуть. Физически не может. Вебинар интересен только в случае, если FGX Native позволит продукт в продакшен пускать. Я вчера начал своё курьерское приложение на котлине переписывать, так как FMX мобильный - это просто ужас, который Эмба в какое-то адекватное состояние выводить не собирается, судя по последним 5 версиям студии. Так что хочется понимания, что это за продукт, а не очередную презенташку, в которой всё шикарно. Понятно, что на вебенаре будут обсуждаться только плюсы. Так что он не интересен по определению.
  8. А есть какие-нибудь демки? Главное, что бы хеловорд apk не весил 5-10Мб и не тормозил на старых аппаратах безбожно, как FMX. И что с сервисами под андроид?
  9. Akad

    WebBrowser Печать

    В HTML надо добавить что-то типа <script type="text/javascript"> function Printt(){ window.print(); }; </script> И потом просто вызвать этот ява код. TMSFMXWebBrowser1.ExecuteJavascript('Printt();'); Если страница грузится с интернета полностью, то естественно надо отредактировать её с учётом html синтаксиса. Так же стоит убрать весь мусор со страниц и повысить версию браузеру для лучшей совместимости: a := TRegistry.Create; a.RootKey := HKEY_CURRENT_USER; a.OpenKey('Software\Microsoft\Internet Explorer\PageSetup',true); a.WriteString('footer',''); a.WriteString('header',''); a.CloseKey; a.OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION',true); a.WriteInteger('Client1.exe',$2af9); a.CloseKey; a.Free; Где Client1,exe - имя вашего exe. P.S. И лучше использовать браузер от TMS, проблем под 10.2.х на порядок будет меньше.
  10. Akad

    WebBrowser Печать

    Самое простое - вызвать ява скрипт с window.print();
  11. Это примерно как забыть о том, как работает функция, что где править. Естественно забудет, а потом вспомнит, когда менять что-то будет в этом месте. Вдеть в начале процедуры прямо сразу cooltimer.Enabled := false; наведёт на мысли. Всегда много путей. Какой-то определённо проще. Но я не пишу приложения, которые лагают, которые нажал на кнопку рутинного действия и сидишь, ждёшь результат. Более того моё текущее приложение (клиент-серверное, с огромными объёмами данных от БД) ввобще не лагает, даже на 3G модеме, на котором параллельно ещё качается торрент. То есть для меня важно, что бы пользователь мог работать нормально. Единственное о чём я сожалею, что всё завязано на FMX. От него "прилетает" безумное количество мелких и не очень глюков, отсутствие работающих скинов и так далее. Но это уже к теме не относится... Я в текущий момент из интерфейса по скорости и удобству выжал уже почти максимум в том числе и из-за Application.ProcessMessages.
  12. Так же плохой для многих стиль - goto, break и continue. А многим коллегам ума не хватает даже использовать free /release и глобальные переменные, для них созданы всякие диезы с явами. И дальше что? Подстраиваться под всех, не используя возможности полноценного языка? Application.ProcessMessages надо просто использовать с осторожностью. Таймеры отключать, за нажатиями на закрытие форм и пр. следить. Если есть какое-то долгое вычисление, которое не предсказуемо через какое время закончится, а таблицу уже начали обновлять, то милое дело запустить его в другом потоке, параллельно в GUI проигрывая анимашку. Другие варианты реализаций - это очень сложно, и интерфейс получится не отзывчивым. Splash с прогрессом надо делать только так, если максимальной скорости загрузки хотим. Вообще много областей применений есть у Application.ProcessMessages. Надо помнить об основных нюансах, иначе будут проблемы.
  13. Мда. Судя по списку ни одного реально важного исправления. Опять.
  14. Я более 10 лет пишу многопоточные приложения, и как-бы немного знаю как и что делать. Ни каких случайных AV у меня нет. Есть Люди ловят этот же глюк, но что делать с ним - ни кто не знает. Евгению помог TThreadedQueue, но это не мой вариант, у меня он в архитектуру не впишется.
  15. Не верю. Можно пруфчик? Ну в смысле что бы какая-то программа, которая ставится и работает на 10 000 компах без сбоев. Ну это просто не реально. Если кто-то причесал поделку от эмбы на малом предприятии, и впарил заказчику результат - это не считается. Под винду даже helo word будет глючить на fmx. Я молчу если на этот лабел скин от эмбы натянуть. Тогда как минимум minimize отвалится. В VCL - поверю на ранних версиях XE все действительно собирается и работает отлично. Но с fmx - не верю. Это не возможно. Везде глюкалово. Начнём с того, что офиальные темы даже под винду - это вещь, которую похоже даже на тест не отдавали судя по всему. Под анроид, если выбирать компоненты не сильно хуже. Ещё раз повторю: берлин глючнее токио. К проблемам с синхронайзом там добавляются ещё другие, о чём в прошлой ветке на тему я констатировал. Исследовать подробнее не стал, так как не вижу смысла ковырять труп. В токио под виндой 3 большие проблемы, которые тянут за собой много: криво портированный браузер, синхронайз, который выглючивает весь интерфейс, и сворачивание/разворачивание окна. Это не решаемые проблемы без серьёзной доработки FMX, но на более ранних было гораздо хуже.
  16. Вот так я открываю яндекс навигатор: var Intent: JIntent; pm: JPackageManager; tempList: JList; begin ..... Intent := TJIntent.Create; Intent.setAction (StringToJString('ru.yandex.yandexnavi.action.BUILD_ROUTE_ON_MAP')); Intent.setPackage(StringToJString('ru.yandex.yandexnavi')); pm := SharedActivity.getPackageManager; tempList := pm.queryIntentActivities(Intent, 0); // Проверяем, установлен ли Яндекс.Навигатор if (tempList = nil) or (tempList.SIZE = 0) then begin // Если нет - будем открывать страничку Навигатора в Google Play Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.setData(StrToJURI('market://details?id=ru.yandex.yandexnavi')); end else begin // intent.putExtra(StringToJString('lat_from'), g_CurrentLocation.la); // intent.putExtra(StringToJString('lon_from'), g_CurrentLocation.lo); Intent.putExtra(StringToJString('lat_to'), StringToJString(las)); Intent.putExtra(StringToJString('lon_to'), StringToJString(los)); // intent.putExtra(StringToJString('desc'), StringToJString(LOS)); end; SharedActivity.startActivity(Intent); end; Тут задаётся куда. Так же можно откуда и описание (комментировано) Их нету. Есть возможность статично что-то отобразить. Не более.
  17. Проще всего из программы открыть яндекс или другой навигатор с установленными точками куда идти. Самому сделать нормальный навигатор - это чьё-то платное api, так как бесплатное не гарантированно будет отдавать данные, ну и месяцы работы.
  18. far, alt+f7, FMX.Platform.Win* по всем возможным локациям. Ещё можно грубую синтаксическую ошибку в pas файле сделать. Если компиллер ругнулся, файл тот. Если нет, то только п.1
  19. вроде так и написал? Я всегда ставлю маркер. И после переползания на новую версию смотрю пофиксили баг или нет. Фиксы прилетают раз в 3 мес. в среднем, каждый раз что ли перетряхивать все папки со всеми своими проектами прошлыми и текущими? Нафиг надо. 1 раз через diff поправил новые файлы и всё. А на другой компьютер - скопировал *.pas из release. Всё.
  20. Если где-то не хватит файла - студия скажет.
  21. Нет, надо удалить FMX.Platform.Win.dcu из папки ...Embarcadero\Studio\19.0\lib\win32\ debug/release. Ну и естественно положить pas в release. И копировать в каждый новый проект? Смысл?
  22. Akad

    TStringGrid - Header

    По аналогии с дельфёю: Form1->StringGrid1->Cells[0][0]
  23. Как и любую другую программу, завязанную на adb. Например так: https://stackoverflow.com/questions/4893953/run-install-debug-android-applications-over-wi-fi
×
×
  • Создать...