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

Dmitry_4501

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

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

  • Посещение

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

    9

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

  1. Можно поконкретнее, пожалуйста?
  2. Ну, если я не ошибаюсь, то Project->Format Project Sources, как раз и форматирует все юниты проекта.
  3. Да, про это знаю. До текущего момента пользовался этим, но я уже несколько лет пользовался именно встроенным средством форматирования кода. К тому же я его настраивал как мне было удобно. А тот, что поставляется с CnWizards форматирует только в одном порядке, без какой-либо возможности редактирования правил форматирования. Вопрос уже решил, но теперь форматировать смогу только по одному файлу за раз. CTRL+D (работает, причем берет параметры из настроек для Formatter), а вот если использовать через меню Project->Format Project Sources, то весь код портится сразу.
  4. Спасибо за файл, но почему-то это не принесло ожидаемого результата(( Буду искать решение проблемы еще... Upd: можно еще файл Embarcadero.Modeling.Formatter.dll? Upd2: Вопрос решен! (не знаю, одно ли то же это или нет, но форматирование кода через меню Project->Format Project Sources поганит весь код, а если использовать сочетание клавиш CTRL+D, то он конечно форматирует только текущий документ (вроде), то все работает нормально).
  5. Приветствую. Перешел на 10.4, но столкнулся с проблемой. Либо я чего-то недопонимаю, либо Embarcadero убили Formatter, ибо строки после форматирования прыгают аж на 8 табов (Tab stop), хотя в настройках все указано верно, пробовал играться с профилями утилиты, но толку это не дало. По этому пришел к следующему выводу - надо попробовать заменить Formatter на заведомо рабочий из 10.3.3. Собственно, у меня к вам просьба. Могли бы скинуть Formatter.exe из папки Вашей среды? Он находится по следующему пути: ДИСК:\ПУТЬДОСТУДИИ\bin\Formatter.exe (например у меня: C:\Embarcadero\Studio\bin\Formatter.exe). Прошу скинуть его сюда. Спасибо! Upd: К слову о том, что происходит во время форматирования кода при помощи Formatter.exe (скрины под спойлером)
  6. Держите, кому нужно. В архиве библиотеки BASS (для Windows и Android), а так же все найденные мною дополнения (У меня есть дополнения не для всех платформ. Например, какие-то дополнения я нашел только под Windows, а библиотеки каких-то дополнений BASS есть не на каждый процессор) ВАЖНОЕ ЗАМЕЧАНИЕ: Для дополнений у меня нет юнитов, но их не сложно сделать самому. Просто скачиваем с сайта un4seen необходимые плагины для Windows и переписываем его на динамическую загрузку (LoadLibrary, GetProcAddress и т.д.). Библиотеку протестировал, проверил не все функции, но основное все работало прекрасно. Проверял следующее: BASS_Init, BASS_StreamCreateFile, BASS_StreamCreateURL, BASS_ChannelPlay, BASS_ChannelPause, BASS_ChannelIsActive, BASS_ChannelGetAttribute, BASS_ChannelSetAttribute, BASS_ChannelGetLength, BASS_GetConfig, BASS_SetConfig, BASS_GetConfigPtr, BASS_SetConfigPtr (вроде все, может что-то упустил). Все работало на Windows и Android. Если нужна будет помощь с подключением библиотеки - задавайте вопросы bass.zip
  7. Dmitry_4501

    Раскрасить Bitmap.

    Приветствую. Имеются кнопки, в стиле которых есть иконки. Захотелось немного сэкономить свое время и вместо того, чтобы делать несколько отдельных иконок с разными цветами, я подумал раскрасить одну иконку в нужный цвет в нужный момент времени. Например: Кнопка неактивна - иконка темно-серого цвета. Кнопка активна - иконка черного цвета. Кнопка выделена курсором (MouseEnter) - иконка например темно-синего цвета. и т.д. По сути подумал использовать встроенный эффект TFillRGBEffect. Цвет легко меняется, в дизайнтайме все работает хорошо, но стоит только запустить программу, как во время инициализации формы приложение немного зависает а после вылетает с ошибкой. (скрины ошибок под спойлером). .
  8. В общем. Вот пример. Для его работоспособности пришлось добавить одну строчку в файл FMX.Platform.Win.pas, связана она с тем, чтобы получить возможность перехватывать сообщения окна. Решение взято было отсюда: Далее, использовал этот код (написанный на C#). Взяв решение оттуда и просто чуть-чуть переделав его под Delphi смог получить нативную тень над формой. Проверил на форме с нестандартным стилем (который затрагивает заголовок формы), там есть проблема (не понял, как ее решить, да и не копал особо в эту сторону). Если использовать тень, то заголовок формы перекрывается родным от Windows и из-за этого он полностью ломается (не реагирует на перемещение, изменение размеров и кнопки так же неактивны). Так что самым простым вариантом с нестандартным стилем для меня оказалось - просто использовать BorderStyle - None, конечно, тогда придется вручную реализовывать бордюр и заголовок, а так же перемещение за заголовок и изменение размеров формы за бордюры. Но, благо в Firemonkey уже это все реализовано в виде двух простых функций StartWindowDrag и StartWindowResize. В общем, если у кого-то есть идеи, как это можно улучшить и САМОЕ ГЛАВНОЕ решить проблему с нестандартными стилями - буду благодарен за помощь. BorderlessWindowWithShadow.zip
  9. Так и я тоже) Решение я вообще собирал отчасти по кусочкам с различных форумов. Так же была и ваша часть) Но, когда я сделал все, у моего окна было "две" тени, одна нативная от Win10, вторая, как у вас. Так что строчка SetClassLong(...) не пригодилась мне, убрав ее я убрал такую тень. Как буду за домашним пк, то скину сюда пример с кодом.
  10. CreateParams я не использовал, WndProc тоже (только в одном файле, FMX.Platform.Win вроде). Есть только одно различие, я не использовал кастомный стиль, использовал пока только Borderless форму и все. Но сегодня попробую еще и с кастомным стилем. По итогу получилась Borderless форма с нативной тенью из Windows 10.
  11. Я просто переписал на Delphi это решение (видео на YouTube). А вот исходник
  12. Да пожалуйста). Там просто глупая вещь получилась (очень). Забыл подключить библиотеку (LoadBASSDLL) Так что тут ничего сверхъестественного, после этого все, что я хотел работало нормально.
  13. Все. Кажется понял в чем дело. Библиотека завелась нормально.
  14. PAnsiChar - это я под Windows делал. Таким образом я смог с легкостью пользоваться этими функциями (BASS_GetConfigPtr и BASS_SetConfigPtr) и получать\устанавливать значения строковых параметров. В Android же такой тип не поддерживается и соответственно что-то другое нужно. Я сейчас еще ковыряю проект. PAnsiChar изначально и нет в pas файле. У меня так же, что в Win версии, что в Android версии на этих функциях идет Pointer.
  15. Приветствую. На просторах интернета нашел BASS-библиотеку для Android и соответственно обертку для нее под Delphi. Вроде бы все работает нормально, но вот при настройке библиотеки при помощи методов BASS_GetConfigPtr, BASS_SetConfigPtr для работы со строковыми параметрами возникает проблема. На Windows с этим я легко работал, там достаточно использовать такую конструкцию PAnsiChar(BASS_GetConfigPtr(configId)) и получаем значение. BASS_SetConfigPtr(configId, PAnsiChar(value)) и задаем значение. Но вот под Android такой способ не проходит, как минимум по одной причине - он не понимает, что такое PAnsiChar. На docwiki.emarcadero.com, есть вот такая статейка. В которой написано, что PAnsiChar нужно заменить одним из трех: System.String, System.MarshalledString или System.SysUtils.TStringBuiler Только вот, если использовать MarshalledString, то при попытке получить значение приложение просто намертво зависает и все. Потом я подумал, так как библиотека написана на Java (вероятно), то может стоит попробовать использовать JNI в работе с ней, так как в Java файле, который прилагался вместе с библиотекой. Там я нашел объявления этих функций и заметил, что тип возвращаемого значения Object (ну, не зная Java я просто предположил, что это тоже просто ссылка на значение, например как PAnsiChar в Delphi на Windows). Но, при попытке как-либо использовать это натыкаюсь на проблемы в виде ошибки компиляции, либо очередном зависании приложения. Так как возвращается Object, то решил попробовать вариант с JObject и JString, но ни один вариант не хочет работать, опять ошибки на стадии компиляции, либо зависание приложение. Может быть, я что-то не так делаю. В общем, буду признателен за помощь!
  16. BlurBehind Control. Компонент позволяет использовать размытие, по типу, которое реализовано в WIndows 10, т.е компонент позволяет "размыть" то, что находится под ним. Пусть и увидел это непосредственно в самой студии на стартовой странице (Welcome Page), но все-таки подумал скинуть ссылку сюда. Исходники: https://github.com/grijjy/CodeRage2019/tree/master/BlurBehind Видео:
  17. Приветствую. Имеется необходимость получить список всех видимых (GUI) компонентов, установленных в Delphi. Я видел где-то, что можно как-то попробовать через ToolsAPI это сделать, но ничего толкового на эту тему так и не нашел. Может есть у кого мысли по этому поводу? Если возникнет вопрос: для чего тебе это? Ответ: Для приложения LivePreview, которое идет вместе со студией для того, чтобы видеть то, что размещаю на форме непосредственно на устройстве. Спасибо!
  18. Имеются ли у вас на примете какие-нибудь библиотеки для реализации видеоплеера на Android в среде Delphi? Не считая этого:http://www.flashavconverter.com/
  19. В общем. Embarcadero решились таки исправить проблему с кнопками сами и теперь приложение у меня работает нормально, все кнопки с пульта отлавливаются и коды приходят, но все же бегло просмотрел файлы и сразу же наткнулся на то, что не все кнопки были добавлены, ибо у Google коды кнопок идут от 0 до 285, а вот Embarcadero добавили только от 0 до 221, не знаю, почему не добавили все. Используемая версия IDE: Rio 10.3.2
  20. Приветствую. Хотелось бы узнать у тех, кто уже перешел на 10.3.2. Исправили ли Embarcadero проблему с тем, что Code Insight находил ошибку в коде, когда пытался объявлять переменные внутри блока begin\end? Можно конечно отключить детектирование синтаксических ошибок и тогда все становится нормальным, но вот лично для меня это не самый удобный способ. Соответственно, те, кто уже обновил на 10.3.2 и у кого есть Delphi версия, могли бы проверить этот момент?
  21. В общем удалось решить проблему с кнопками пульта. Теперь приложение распознает все кнопки с пульта. Если кому-то нужно, прикрепил архив. (Delphi 10.3.1 Rio) fmx_androidkey_fix.zip
  22. Задался идеей написания IPTV приложения "для себя", в котором при желании смог бы реализовать что-то необходимое и удалить то, что не нужно. Собственно вопрос в другом: Я написал простое приложение, которое отлавливает коды кнопок с пульта, приложение по сути самое банальное, использует OnKeyDown и OnKeyUp (чисто для теста). И по нажатию на кнопку на пульте высылает например в Memo или ListBox Информацию о нажатой кнопке (включая ее код). Но суть в том, что далеко не все кнопки таким образом распознаются. Для примера: Кнопки громкости, назад, домой, увеличение\уменьшение громкости, стрелки(влево, вправо, вверх, вниз) и центральная кнопка (по совместительству OK). Цифры все определяются, как одна - 0 Кнопки, которые не определяются (не срабатывает событие, ибо если был бы неизвестен код, то думаю, в таком случае получил бы все, кроме кода кнопки), но по нажатию кнопки, которая не определяется приложением - ничего не происходит вообще. Вопрос: Есть ли возможность как-то "научить" приложение распознавать эти кнопки? (Я где-то читал, может даже и здесь, что это все так реализовано именно на уровне самого FireMonkey, будто этих кнопок вообще не существует). Если эта тема уже поднималась на форуме или вопрос очень просто решается - извиняюсь) Решение: http://fire-monkey.ru/topic/5624-как-отловить-кнопки-пульта-ду/?do=findComment&comment=36399
  23. У компонента TNetHttpClient насколько я помню есть свойство Asynchronous, если выставить значение в true, то работа компонента станет асинхронной, а вот про THttpClient такого сказать не могу (по крайней мере я не понял как там можно настроить его на асинхронную работу), но проблему асинхронности с компонентом THttpClient можно решить с помощью потоков.
  24. Dmitry_4501

    Странный баг с TMultiView

    В общем, проблема с компонентом такая: при нажатии на кнопку (MasterButton), если нажимать на нее быстро (т.е открывать\закрывать) то ширина панельки постепенно меняется (сужается). Такой баг происходит в том случае, если кнопка расположена непосредственно внутри самого компонента, если же кнопка отдельно, то таких проблем я не заметил. Проверить у себя это очень просто: разместите на форме компонент TMultiView, выберите режим (NavigationPane или PlatformBehavior), разместите кнопку внутрь компонента (MasterButton) а потом в самой программе быстро нажимайте на кнопку и смотрите на результат. Панелька просто сужается до состояния "закрыт", когда видны только иконки без текста.
  25. C Картинкой разобрался, теперь пытаюсь разобраться с панелями, они у меня в роли модальных окон хочу сделать анимацию открытия и закрытия. Пример: анимация открытия и закрытия окон в Windows
×
×
  • Создать...