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

dnekrasov

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

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

  • Посещение

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

    52

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

  1. Я не знаю как в других системах, но в MacOS выгружаются только те файлы, у которых в Deployment стоит Remote Path "Contents\Resources\StartUp\". Если его изменить (например на "Contents\Resources\"), то файлы уже не выгружаются и обращаться к ним можно как к обыкновенным файлам используя путь к исполняемому файлу приложения (TPath.GetLibraryPath)
  2. Это как раз для FireMonkey и прекрасно работает (XE4 - Berlin), но только для приложений под Windows. Проверено на XP, Vista, 7, 8.1, 10 Могу еще предложить свой объект, который когда-то написал (проверено на Win и Mac) WindowMove.zip
  3. Если приложение под Windows, то самое простое решение это в обработчике OnMouseDown написать следующее: ReleaseCapture; SendMessage(FormToHWND(Self), WM_SYSCOMMAND, SC_MOVE + 2, 0);
  4. В наследнике TThread объявите FCancelledEvent: TSimpleEvent; Переопределите TerminatedSet; в нем сделайте inherited и FCancelledEvent.SetEvent Ну и вместо Sleep используйте FCancelledEvent.WaitFor После этого Ваша проблема исчезнет
  5. Я бы посоветовал Вам использовать системные возможности. Не знаю как для iOS и Android, но для Windows и OSX работает все превосходно. Посмотрите Здесь для Windows и Здесь для OSX
  6. А почему бы не воспользоваться System.Classes.TAnonymousThread ?
  7. Описания я так и не нашёл - пришлось до всего доходить самому. В данном случае eidtstyle - простой TLayout. Кстати, чаще всего как контейнер для стиля контрола используется TLayout, но в последних версиях редактора стилей появилась возможность использовать при создании не только контролы из палитры но и такие объекты как TStyledObject, TActiveStyleObject и т.д. - что значительно упростило работу (раньше приходилось вручную редактировать текст стиля). А вообще, чтобы просто понять работу со стилями и разобраться хотя-бы в основных принципах работы с ними мне очень помог Firemonkey StyleEditor. Он очень глючный, давно уже не поддерживается и реальные стили с его помощью уже не создать, но как помощник при старте изучения можно использовать.
  8. Как это нет? А набор анимаций для чего. С их использованием можно сделать практически любой выверт с UI. Вообще различные Animation очень забавная вещь. Когда у меня была задача создать свой стиль для приложения и я стал вплотную изучать этот вопрос (ещё на XE4) то добравшись до этого просто забыл про время, забавляясь с различными возможностями этого функционала (именно применительно ко стилям)
  9. Насколько я помню, там идет работа через его свойство IOHandler, а у него есть методы типа SendStream, SendString и т.д. Лично я, когда работал с ним (правда давно это было), писал свой IOHandler, наследуясь от TIdIOHandlerStack и там реализовывал практически всю логику работы с сервером - правда пришлось немало времени потратить на то чтобы разобраться как это все работает. Но можно на этом не заморачиваться и использовать методы Send... и WaitFor у IOHandler-а, создаваемого по-умолчанию
  10. Если счетчик сам ничего не посылает (т.е. посылает только данные в ответ на какой-то конкретный запрос), то TIdTCPClient будет вполне достаточно.
  11. Ну если канал прозрачный - то работайте как с COM-портом используя какой-либо TCP-клиент. Только не HTTP а именно TCP.
  12. Протокол обмена по HTTP абсолютно другой. По HTTP подаются команды, которые говорят VR-006 какую команду подать счетчику по COM. Вернее даже не команду, а набор команд. Так что по HTTP вы посылаете совсем другие команды и в совершенно другом формате.
  13. Как я понял, почитав инфу по ссылке, вам предоставляется простой веб-интерфейс для управления прибором. Работать так же как и по COM-порту с ним не получится, т.к. вы работаете уже не с прибором, а с устройством-преобразователем (VR-006). С ним можно работать как с обыкновенным HTTP сервером используя какой-либо HTTP клиент (TIdHTTPClient, TNetHTTPClient и т.п.). Но получать в ответ Вы будете какой-то HTML который надо будет парсить, а какие запросы нужно посылать можно узнать просто посмотрев исходник страничек в браузере. Ну или обратиться к производителю, чтобы они описали протокол обмена по HTTP
  14. А что за прибор? Может ссылочка есть - или это собственная разработка (просто интересно - сейчас сам с подобными приборами работаю)
  15. Тут всё зависит от устройства. Обычно к таким устройствам идет в комплекте SDK, и напрямую по TCP/IP с ними никто не работает. Чаще всего это набор функций в DLL, иногда набор ActiveX-контролов, один раз видел как устройство определяется как сетевой диск и работа с его памятью идет как обычная работа с файлами. Но, если Вы все-таки хотите с ним работать напрямую - то у Вас, как минимум, должно быть описание протокола обмена данными с этим устройством - а там уже решать что использовать. Если устройство поддерживает HTTP протокол - то использовать какой-либо HTTP клиент (TIdHTTPClient, TNetHTTPClient и т.п.), если нет - что-то типа TIdTCPClient.
  16. Насчет андроидных сервисов - ничего не могу сказать (просто никогда ими не интересовался), а в виндовом сервисе все работает без проблем (для него и писалось). Могу лишь посоветовать не использовать TThread.Synchronize, ведь этот метод синхронизирует с главным потоком приложения, а сервисы работают в отдельном потоке, а в главном происходит только обработка сообщений сервису.
  17. dnekrasov

    SDKTransform.exe

    Это я видел... Вот только в логе - те же самые ошибки, что и после запуска SDKTransformRun.bat
  18. dnekrasov

    SDKTransform.exe

    В 10.1 Berlin появился инструмент SDKTransform. Хотелось бы узнать как им правильно пользоваться или где почитать о нем. А то при попытке его использования выдает кучу ошибок. Справедливости ради надо заметить, что что-то он всё-таки импортирует - но этого слишком мало. Может кто-нибудь знает об этом хоть что-то?
  19. Ну... сразу напрашивается вывод, что у AImage и ResBitmap разный PixelFormat, а именно - ARGB и ABGR
  20. Зачем? Ведь стиль для того и создается, чтобы не заморачиваться над UI. В редакторе стилей у GlowEffect поставить Enabled=False и в триггере выбрать IsPressed=True - и наслаждайтесь
  21. Опытным путем выяснил что это не так. Это максимальная сторона изображения, а пропорции его не должны превышать пропорции монитора (может десктопа?). Т.е. если TCanvasManager.DefaultCanvas.GetAttribute(TCanvasAttribute.MaxBitmapSize) возвращает 8192, то для монитора с разрешением 1440х900 можно создать битмапку размером не больше чем 8192х5120, в противном случае получаю ошибки "Cannot create texture for 'TCanvasD2D'" или "Stack overflow" Позже попробую поэкспериментировать на десктопе, растянутом на 2 монитора с портретной и ландшафтной ориентацией.
  22. Тоже интересовал этот вопрос. Нарыл кучу информации, но в конце концов реализовал этот механизм. Смотрите прикрепленный архивчик - там простенький проект, показывающий как ото сделать. Проверял на Delphi 10 Seattle + OS X El Capitan 10.11.4 OpenWith.zip
×
×
  • Создать...