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

Vasya

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

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

  • Посещение

  1. Я понимаю - да, можно. Данный подход я и называю "рисовать" - то, что требует творческого осознания эстетики визуальной части контрола в противовес кодированию. Просто выглядит странно, что такая мощнейшая библиотека, как FireMonkey в стоке не располагает хорошими темами (кроме двух).
  2. Благодарю, посмотрю. Правда, я думал, что обнаруженная мною особенность настолько "тонкая", что в уроках не освещается...
  3. Сила FireMonkey в невероятно гибкой стилизации, а также в том, что кто-то это всё профессионально нарисовал (для стандартных контролов)... Нашёл в папочке C:\Program Files (x86)\Embarcadero\Studio\23.0\Redist\styles\Fmx\ кучку стилей, из которых минимально прилично выглядят только Win10Modern и Win10ModernDark. Также нашёл платные ресурсы. Стесняюсь спросить: а всё уважаемое сообщество стили вполне себе стандртных контролов покупает, рисует или где-то берёт?
  4. Два варианта кода Обнаружил, что эти две версии (одного и того же по смыслу, как я думал ранее) кода дают в корне разный результат. Через TStyleManager: if UseDarkTheme then TStyleManager.SetStyleFromFile('Dark.style') else TStyleManager.SetStyleFromFile('Light.style'); Через StyleBook формы: if UseDarkTheme then StyleBook.LoadFromFile('Dark.style') else StyleBook.LoadFromFile('Light.style'); Self.StyleBook := StyleBook1; // Особая строчка Особая строчка нужна для того, чтобы стиль применился. И это не смотря на то, что до выполнения этой комнады, Self.StyleBook и так указывает на StyleBook1. А теперь о разнице Разница между вариантами в том, что в первом случае не пострадают те стили, которые я уже переопределил через визуальный редактор стилей и прописал в нужных мне контролах. А второй вариант кода заменит тотально всё - в т.ч. и то, что я прописал в нужных мне контролах, т.е. испортит. Вопросы к знающим Где в документации описана эта разница в поведении? Как второй способ обучить не портить "мои" стили? Как первый способ обучить брать стили не из файла, а из ресурсов приложения (для чего ресурсы и созданы, собственно)?
  5. Благодарю - детект заработал идеально!
  6. Ох ничего себе... как на голом API... Я думал, есть какой продуманный способ. А вот что-то в духе https://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.Platform.IFMXSystemAppearanceService, но чтобы событие было, не существует в FMX? Вообще, странно, что в такой мощнейшей библиотеке через API надо делать такую очевидную потребность. А "включаем нужную тему" - можно поподробнее? Что там за темы? Там же стили только.
  7. Приветствую товарищи! Каким образом на FMX сделать динамическую реакцию на изменение цветовой схемы Windows (светлая/тёмная)? В VCL это делалось через обработку WM_SETTINGCHANGE, но здесь же нет хендлеров... И как грамотно загружать саму схему? Кстати, может, кому пригодится - рамку окна можно менять с помощью https://github.com/HemulGM/WindowDarkMode. Но только рамку.
  8. Вероятно, я неправильно понял данное сообщение - Я понял "встроена" как наличие в стандартном дистрибутиве Delphi/BDS. Вероятно, имелось в виду, что OXML поддерживается TXMLDocument и может быть доступна через него. Ну вот, разобрались )
  9. Приветствую всех! Как наиболее безопасным способом послать главному окну другого приложения комбинацию клавиш? В качестве подопытного я взял саму оболочку Delphi и пытался ей отправлять Ctrl+F9 (компиляция): PostMessage(H, M.wParam, VK_LCONTROL, KF_EXTENDED shl 16); Sleep(50); PostMessage(H, M.wParam, VK_F9, 0); Sleep(50) M.wParam равен либо WM_KEYDOWN, либо WM_KEYUP (смотря какое сообщение M придёт). Не всё так просто! Если отправлять часто, то иногда Delphi реагирует на F9 без Ctrl (запускает отладку). Вероятность сбоя достаточно высокая, чтобы данный метод не считать надёжным. Вышеприведённый код находится в глобальном хуке WH_KEYBOARD_LL и в принципе не может отправлять F9 без Ctrl.
  10. Спасибо! По поводу этих двух понял. А по поводу OXML? Тема-то про него.
  11. Во-первых Я тут покопался в документации: https://docwiki.embarcadero.com/Libraries/Athens/en/Xml.xmldom.TDOMVendorList.Vendors - здесь ошибка в коде, надо "-1" после Count https://docwiki.embarcadero.com/RADStudio/Athens/en/Using_the_Document_Object_Model - здесь есть табличка, из которой следует, что есть 3 вендора, как минимум. А потом проверил на Delphi 12 ver. 29.0.53982.0329 (только что развёрнутый дистрибутив): for i := 0 to DOMVendors.Count - 1 do WriteLn(DOMVendors[i].Description) Выводит: MSXML И всё... а где взять остальных? Во-вторых Автор OXML на своей странице http://www.kluug.net/oxml.php пишет: Он лишь вдохновлялся OmniXML, но написал с нуля свою библиотеку... А теперь вопрос А точно ли OXML встроена в существующий TXMLDocument, как Вы пишете? Если да, то как её там или вообще хоть где-то найти? Вопрос для меня не праздный... P.S. Нашёл нечто https://github.com/ashumkin/OXML, но автор другой и 7 лет назад залито. А на сайте http://www.kluug.net/oxml.php 03.01.2024. Upd2: подключил https://github.com/ashumkin/OXML, он стал листиться из DOMVendors и даже работать, но это ведь древняя версия и не из стандартной поставки RAD Studio.
  12. Приветствую всех! Я пытаюсь отлаживать консольное Linux x64 приложение, запущенное в WSL2 (Ubuntu 22.04 LTS) из Windows с использованием PAServer, запущенного на Ubuntu. Отладчик в приницпе работает, только есть одно "но" - весь консольный вывод сыплется в окно Events в IDE, а не в терминал Ubuntu, где я его ожидаю. И, соответственно, консольный ввод (ReadLn) не работает. Но стоит запустить всё тоже самое без отладки (Ctrl+Shift+F9) - как весь консольный вывод и ввод остаётся в терминале и всё хорошо. Ну и просто если зайти в Ubuntu и запустить программу - она работает работает с терминалом нормально. Как запустить отладчик так, чтобы в качестве консоли был терминал в Ubuntu?
  13. Ещё раз сделал цепочку действий: 1. Двойной клик на StyleBook, лежащий на форме 2. Загружаю в него коллекцию стилей из файла "C:\Program Files (x86)\Embarcadero\Studio\21.0\Redist\styles\Fmx\Win10Modern.Style" 3. Слева вижу, что "background" имеет иконку как у меня (растровую), а не как у тебя ЧЯДНТ?
  14. На вид соответствует (сорри за гигантскую фотку, не уменьшается): Из этого всего надо вытащить цвет selection. Upd: аааааа, у видел разницу в иконке... и что делать? Этот стиль не я создавал, это стандартные стили из дитрибутива Борланда, называется "Windows 10"
  15. Я это прекрасно понимаю, но нет там nil!
×
×
  • Создать...