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

Dmitry_4501

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

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

  • Посещение

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

    9

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

  1. Только что, krapotkin сказал:

    ну, вообще-то настройки в cnPack есть. Может, там нет именно того, что вам нужно...

    А про форматирование всех файлов разом я вообще впервые узнал ))

    Ну, если я не ошибаюсь, то Project->Format Project Sources, как раз и форматирует все юниты проекта.

  2. Только что, krapotkin сказал:

    CnWizards + CtrlW ?

    Да, про это знаю. До текущего момента пользовался этим, но я уже несколько лет пользовался именно встроенным средством форматирования кода. К тому же я его настраивал как мне было удобно. А тот, что поставляется с CnWizards форматирует только в одном порядке, без какой-либо возможности редактирования правил форматирования.

    Вопрос уже решил, но теперь форматировать смогу только по одному файлу за раз. CTRL+D (работает, причем берет параметры из настроек для Formatter), а вот если использовать через меню Project->Format Project Sources, то весь код портится сразу.

  3. В 02.06.2020 в 05:43, slav_z сказал:

    Formatter.zip 10.3.3

    Спасибо за файл, но почему-то это не принесло ожидаемого результата((

    Буду искать решение проблемы еще...

     

    Upd: можно еще файл Embarcadero.Modeling.Formatter.dll?

    Upd2: Вопрос решен! (не знаю, одно ли то же это или нет, но форматирование кода через меню Project->Format Project Sources поганит весь код, а если использовать сочетание клавиш CTRL+D, то он конечно форматирует только текущий документ (вроде), то все работает нормально).

  4. Приветствую. Перешел на 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 (скрины под спойлером)

    Спойлер

    До форматирования кода

    before_format.png.dea2106eae38b86e9921537aafed8fc8.png

    После форматирования кода

    after_format.png.a0b9c9140a2ae97fc4b48d808fe7d980.png

     

  5. Держите, кому нужно. В архиве библиотеки 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

  6. Приветствую. Имеются кнопки, в стиле которых есть иконки. Захотелось немного сэкономить свое время и вместо того, чтобы делать несколько отдельных иконок с разными цветами, я подумал раскрасить одну иконку в нужный цвет в нужный момент времени. 

    Например:

    Кнопка неактивна - иконка темно-серого цвета.
    Кнопка активна - иконка черного цвета.
    Кнопка выделена курсором (MouseEnter) - иконка например темно-синего цвета.

    и т.д.

    По сути подумал использовать встроенный эффект TFillRGBEffect. Цвет легко меняется, в дизайнтайме все работает хорошо, но стоит только запустить программу, как во время инициализации формы приложение немного зависает а после вылетает с ошибкой. (скрины ошибок под спойлером).

    Спойлер

    796596988_.PNG.540b16e5d30f9adbf8c94e4210d35ba5.PNG

    Запустив программу в режиме отладки, то срабатывает исключение EClassNotFound.2012652848_.PNG.77744d6cb9ed5458db1d23a9c431662d.PNG

    .

     

  7. В общем. Вот пример.

    Для его работоспособности пришлось добавить одну строчку в файл FMX.Platform.Win.pas, связана она с тем, чтобы получить возможность перехватывать сообщения окна. Решение взято было отсюда:

    Далее, использовал этот код (написанный на C#). Взяв решение оттуда и просто чуть-чуть переделав его под Delphi смог получить нативную тень над формой. 
     

    Проверил на форме с нестандартным стилем (который затрагивает заголовок формы), там есть проблема (не понял, как ее решить, да и не копал особо в эту сторону). Если использовать тень, то заголовок формы перекрывается родным от Windows и из-за этого он полностью ломается (не реагирует на перемещение, изменение размеров и кнопки так же неактивны).

    Так что самым простым вариантом с нестандартным стилем для меня оказалось - просто использовать BorderStyle - None, конечно, тогда придется вручную реализовывать бордюр и заголовок, а так же перемещение за заголовок и изменение размеров формы за бордюры.

    Но, благо в Firemonkey уже это все реализовано в виде двух простых функций StartWindowDrag и StartWindowResize.

     

    В общем, если у кого-то есть идеи, как это можно улучшить и САМОЕ ГЛАВНОЕ решить проблему с нестандартными стилями - буду благодарен за помощь.

    BorderlessWindowWithShadow.zip

  8. 1 час назад, Алиса Романец сказал:

    К моему сожалению, я не такой профессионал Delphi, чтобы полноценно переписать код, что там был. Лучшее, что я смогла сделать - ниже. Однако, тень осталась такой же, как на скрине.

    
    procedure TForm1.CreateHandle;
    begin
      inherited CreateHandle;
    
      var hWnd: HWND := FormToHWND(Self);
      SetClassLong(hWnd, GCL_STYLE, GetClassLong(hWnd, GCL_STYLE) or CS_DROPSHADOW);
    
      var m: MARGINS;
      m.cxLeftWidth := 0;
      m.cxRightWidth := 0;
      m.cyTopHeight := 0;
      m.cyBottomHeight := 1;
    
      DwmExtendFrameIntoClientArea(hWnd, m);
    end;

     

    Так и я тоже)

    Решение я вообще собирал отчасти по кусочкам с различных форумов. Так же была и ваша часть)

    Но, когда я сделал все, у моего окна было "две" тени, одна нативная от Win10, вторая, как у вас. Так что строчка SetClassLong(...) не пригодилась мне, убрав ее я убрал такую тень.

    Как буду за домашним пк, то скину сюда пример с кодом.

  9. 1 час назад, Алиса Романец сказал:

    Решение, написанное ХрисТ'ом: во-первых для VCL (кто-то ранее на форуме уже объяснял, почему в Мартышке нет процедур CreateParams и WndProc), во-вторых - часть его решения уже была переписана вручную (см. обновление к вопросу).

    Мне нужно решение именно для FireMonkey, потому и пришла на этот форум.

    CreateParams я не использовал, WndProc тоже (только в одном файле, FMX.Platform.Win вроде).

    Есть только одно различие, я не использовал кастомный стиль, использовал пока только Borderless форму и все. Но сегодня попробую еще и с кастомным стилем. 

    По итогу получилась Borderless форма с нативной тенью из Windows 10.

  10. В 20.12.2019 в 01:46, #WAMACO сказал:

    а нам рассказать?

    Да пожалуйста). Там просто глупая вещь получилась (очень). Забыл подключить библиотеку (LoadBASSDLL)

    Так что тут ничего сверхъестественного, после этого все, что я хотел работало нормально.

  11. 2 часа назад, sinuke сказал:

    официальной delphi-обертки для андройда нет (по крайней мере на сайте bass). поэтому нужно смотреть каких типов передаются параметры в вашем случае для андройда

    п.с. я сам себе делал андройд-версию - скачал с сайта bass либы и их делфи-обертки. внес изменения и вроде работает. ключевое - вроде. потому как не могу утверждать что 100% правильно.

    и лично у меня там вообще PAnsiChar нет в этом месте

    1469621758_.PNG.4e1b4b1e0c85ad8ba84ff2ca1d16c828.PNG

    PAnsiChar - это я под Windows делал. Таким образом я смог с легкостью пользоваться этими функциями (BASS_GetConfigPtr и BASS_SetConfigPtr) и получать\устанавливать значения строковых параметров. В Android же такой тип не поддерживается и соответственно что-то другое нужно.
    Я сейчас еще ковыряю проект.

    PAnsiChar изначально и нет в pas файле. У меня так же, что в Win версии, что в Android версии на этих функциях идет Pointer.

  12. Приветствую. На просторах интернета нашел 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, но ни один вариант не хочет работать, опять ошибки на стадии компиляции, либо зависание приложение. Может быть, я что-то не так делаю.

    В общем, буду признателен за помощь!

  13. BlurBehind Control. 

     

    Компонент позволяет использовать размытие, по типу, которое реализовано в WIndows 10, т.е компонент позволяет "размыть" то, что находится под ним.

     

    Пусть и увидел это непосредственно в самой студии на стартовой странице (Welcome Page), но все-таки подумал скинуть ссылку сюда.

    Исходники: https://github.com/grijjy/CodeRage2019/tree/master/BlurBehind
    Видео:

    Спойлер

     


     

  14. Приветствую. Имеется необходимость получить список всех видимых (GUI) компонентов, установленных в Delphi. Я видел где-то, что можно как-то попробовать через ToolsAPI это сделать, но ничего толкового на эту тему так и не нашел. Может есть у кого мысли по этому поводу?

    Если возникнет вопрос: для чего тебе это?

    Ответ: Для приложения LivePreview, которое идет вместе со студией для того, чтобы видеть то, что размещаю на форме непосредственно на устройстве.

    Спасибо!

  15. В общем. Embarcadero решились таки исправить проблему с кнопками сами и теперь приложение у меня работает нормально, все кнопки с пульта отлавливаются и коды приходят, но все же бегло просмотрел файлы и сразу же наткнулся на то, что не все кнопки были добавлены, ибо у Google коды кнопок идут от 0 до 285, а вот Embarcadero добавили только от 0 до 221, не знаю, почему не добавили все.

    Используемая версия IDE: Rio 10.3.2

  16. Приветствую.

    Хотелось бы узнать у тех, кто уже перешел на 10.3.2. Исправили ли Embarcadero проблему с тем, что Code Insight находил ошибку в коде, когда пытался объявлять переменные внутри блока begin\end?

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

    Соответственно, те, кто уже обновил на 10.3.2 и у кого есть Delphi версия, могли бы проверить этот момент?

     

     

     

  17. В общем удалось решить проблему с кнопками пульта. Теперь приложение распознает все кнопки с пульта. Если кому-то нужно, прикрепил архив. (Delphi 10.3.1 Rio)

     

    Спойлер

     

    Установка: (архив содержит pas файлы, которые я просто перекинул в папку с dcu), а именно: Диск:\ПутьДоСтудии\lib\android\release (Пример: C:\Program Files\Embarcadero\Studio\lib\android\release).

    Предварительно (либо переименовав, либо вообще удалив соответствующие DCU-файлы. Лучше переименовать).

     

    fmx_androidkey_fix.zip

  18. Задался идеей написания IPTV приложения "для себя", в котором при желании смог бы реализовать что-то необходимое и удалить то, что не нужно.

    Собственно вопрос в другом: Я написал простое приложение, которое отлавливает коды кнопок с пульта, приложение по сути самое банальное, использует OnKeyDown и OnKeyUp (чисто для теста). И по нажатию на кнопку на пульте высылает например в Memo или ListBox Информацию о нажатой кнопке (включая ее код).

    Но суть в том, что далеко не все кнопки таким образом распознаются. Для примера:

    Кнопки громкости, назад, домой, увеличение\уменьшение громкости, стрелки(влево, вправо, вверх, вниз) и центральная кнопка (по совместительству OK).

    Цифры все определяются, как одна - 0

    Кнопки, которые не определяются (не срабатывает событие, ибо если был бы неизвестен код, то думаю, в таком случае получил бы все, кроме кода кнопки), но по нажатию кнопки, которая не определяется приложением - ничего не происходит вообще.

     

    Вопрос: Есть ли возможность как-то "научить" приложение распознавать эти кнопки? (Я где-то читал, может даже и здесь, что это все так реализовано именно на уровне самого FireMonkey, будто этих кнопок вообще не существует).

    Если эта тема уже поднималась на форуме или вопрос очень просто решается - извиняюсь)

    Решение: http://fire-monkey.ru/topic/5624-как-отловить-кнопки-пульта-ду/?do=findComment&comment=36399

     

  19. 16 минут назад, GASCHE сказал:

    А как настраивать?

    У компонента TNetHttpClient насколько я помню есть свойство Asynchronous, если выставить значение в true, то работа компонента станет асинхронной, а вот про THttpClient такого сказать не могу (по крайней мере я не понял как там можно настроить его на асинхронную работу), но проблему асинхронности с компонентом THttpClient можно  решить с помощью потоков.

  20. В общем, проблема с компонентом такая: при нажатии на кнопку (MasterButton), если нажимать на нее быстро (т.е открывать\закрывать) то ширина панельки постепенно меняется (сужается).

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

    Проверить у себя это очень просто: разместите на форме компонент TMultiView, выберите режим (NavigationPane или PlatformBehavior), разместите кнопку внутрь компонента (MasterButton) а потом в самой программе быстро нажимайте на кнопку и смотрите на результат. Панелька просто сужается до состояния "закрыт", когда видны только иконки без текста.

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