Vasya
Пользователи-
Постов
24 -
Зарегистрирован
-
Посещение
Весь контент Vasya
-
Я понимаю - да, можно. Данный подход я и называю "рисовать" - то, что требует творческого осознания эстетики визуальной части контрола в противовес кодированию. Просто выглядит странно, что такая мощнейшая библиотека, как FireMonkey в стоке не располагает хорошими темами (кроме двух).
-
Сила FireMonkey в невероятно гибкой стилизации, а также в том, что кто-то это всё профессионально нарисовал (для стандартных контролов)... Нашёл в папочке C:\Program Files (x86)\Embarcadero\Studio\23.0\Redist\styles\Fmx\ кучку стилей, из которых минимально прилично выглядят только Win10Modern и Win10ModernDark. Также нашёл платные ресурсы. Стесняюсь спросить: а всё уважаемое сообщество стили вполне себе стандртных контролов покупает, рисует или где-то берёт?
-
Два варианта кода Обнаружил, что эти две версии (одного и того же по смыслу, как я думал ранее) кода дают в корне разный результат. Через 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. А теперь о разнице Разница между вариантами в том, что в первом случае не пострадают те стили, которые я уже переопределил через визуальный редактор стилей и прописал в нужных мне контролах. А второй вариант кода заменит тотально всё - в т.ч. и то, что я прописал в нужных мне контролах, т.е. испортит. Вопросы к знающим Где в документации описана эта разница в поведении? Как второй способ обучить не портить "мои" стили? Как первый способ обучить брать стили не из файла, а из ресурсов приложения (для чего ресурсы и созданы, собственно)?
-
Ох ничего себе... как на голом API... Я думал, есть какой продуманный способ. А вот что-то в духе https://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.Platform.IFMXSystemAppearanceService, но чтобы событие было, не существует в FMX? Вообще, странно, что в такой мощнейшей библиотеке через API надо делать такую очевидную потребность. А "включаем нужную тему" - можно поподробнее? Что там за темы? Там же стили только.
-
Приветствую товарищи! Каким образом на FMX сделать динамическую реакцию на изменение цветовой схемы Windows (светлая/тёмная)? В VCL это делалось через обработку WM_SETTINGCHANGE, но здесь же нет хендлеров... И как грамотно загружать саму схему? Кстати, может, кому пригодится - рамку окна можно менять с помощью https://github.com/HemulGM/WindowDarkMode. Но только рамку.
-
Вероятно, я неправильно понял данное сообщение - Я понял "встроена" как наличие в стандартном дистрибутиве Delphi/BDS. Вероятно, имелось в виду, что OXML поддерживается TXMLDocument и может быть доступна через него. Ну вот, разобрались )
-
Приветствую всех! Как наиболее безопасным способом послать главному окну другого приложения комбинацию клавиш? В качестве подопытного я взял саму оболочку 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.
-
Спасибо! По поводу этих двух понял. А по поводу OXML? Тема-то про него.
-
Во-первых Я тут покопался в документации: 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.
-
Приветствую всех! Я пытаюсь отлаживать консольное Linux x64 приложение, запущенное в WSL2 (Ubuntu 22.04 LTS) из Windows с использованием PAServer, запущенного на Ubuntu. Отладчик в приницпе работает, только есть одно "но" - весь консольный вывод сыплется в окно Events в IDE, а не в терминал Ubuntu, где я его ожидаю. И, соответственно, консольный ввод (ReadLn) не работает. Но стоит запустить всё тоже самое без отладки (Ctrl+Shift+F9) - как весь консольный вывод и ввод остаётся в терминале и всё хорошо. Ну и просто если зайти в Ubuntu и запустить программу - она работает работает с терминалом нормально. Как запустить отладчик так, чтобы в качестве консоли был терминал в Ubuntu?
-
Ещё раз сделал цепочку действий: 1. Двойной клик на StyleBook, лежащий на форме 2. Загружаю в него коллекцию стилей из файла "C:\Program Files (x86)\Embarcadero\Studio\21.0\Redist\styles\Fmx\Win10Modern.Style" 3. Слева вижу, что "background" имеет иконку как у меня (растровую), а не как у тебя ЧЯДНТ?
-
На вид соответствует (сорри за гигантскую фотку, не уменьшается): Из этого всего надо вытащить цвет selection. Upd: аааааа, у видел разницу в иконке... и что делать? Этот стиль не я создавал, это стандартные стили из дитрибутива Борланда, называется "Windows 10"
-
Я это прекрасно понимаю, но нет там nil!
-
Что здесь не так? Canvas.Fill.Color := (Sender as TStringGrid).StylesData['background.content.selection.Fill.Color'].AsType<TAlphaColor> выдаёт exception чтения с нулевого адреса. Если же в качестве пути к стилю написать любую ерунду вроде 'aaabbbccc', то выдаёт 0 и не вылетает. Сам Sender приходит нормальный, можно заменить прямо на MyGrid - будет тоже самое. Можно написать AsInteger - будет тоже самое. Вылетает вот здесь: function TRttiProperty.GetValue(Instance: Pointer): TValue; begin if not IsReadable then raise EPropWriteOnly.Create(Name); Result := DoGetValue(Instance); end; Про TAlphaColors.Null понял.
-
Я хочу рисовать на канве цветом, прочитанным из стандартного стиля вот в этом месте, т.к. конкретно в этом месте нет необходимости его переопределять: if TGridDrawState.RowSelected in State then Canvas.Fill.Color := ??? else Canvas.Fill.Color := ???; Т.к. если я этого не сделаю, то вместо синего фона для выбранной строки будут белые дыры с синими рамками. В Вашем примере form1.Style это что? Я думал, что это адресация к стилям из StyleBook, прикреплённого к форме. Ещё я заметил, что есил вместо условия, приведённого выше, просто написать Canvas.Fill.Color := 0; то фон будет всегда нормальный. Ничего не понимаю ) Где это всё описано чётко?
-
Подскажите, а как обратиться к цвету selection'а изнутри обработчка GridDrawColumnCell() ? Ещё глобальный вопрос - а где вообще увидеть, какой контрол что именно использует из стилизатора?
-
Я на FMX раньше не писал, но на VCL выглдело чуть по-другому - антиалиасинг даже другой был.
-
Спасибки! Я почему не люблю с собственным рисованием - потому что никакой гарантии, что это будет в точности также (геометрически), как это делает оригинал...
-
Как в TStringGrid изменить цвет текста по условию желательно без рисования самого текста в ячейке самостоятельно, т.е. только за счёт указания, каким цветом рисовать? Или с рисованием текста, но тогда как его сделать абсолютно точно совпадающим (кроме цвета) с тем, что по-умолчанию выводится?
-
Благодарю, очень интересно! Я тут уже откопал, что их можно загружать в редакторе стилей. Но споткнулся о следующую проблему - в IDE в форме моего приложения видны загруженные мною в редакторе стилей стили, а после запуска приложения опять все стили тёмные ((( Как этим управлять?
-
Приветствую! Чайниковский вопросы: 1. Как глобально во всём приложении для Windows 10 на десктопе изменить стилевое оформление (тему) через IDE? 2. А где вообще в IDE увидеть список доступных стилей, с которым поставляется версия 10.4.2? Вопросы продиктованы следующим: я не могу понять, почему у меня стили всего приложения чёрные... В StyleBook Styles[0] содержат действительно какие-то чёрные стили. Как и где их все сменить разом на что-то другое? Upd: Нашёл в кучку файлов C:\Program Files (x86)\Embarcadero\Studio\21.0\Redist\styles\Fmx\*.Style, похожую на коллекцию стилей. А как и где их можно выбрать для создаваемого приложения под Windows?