Tumaso
Пользователи-
Постов
356 -
Зарегистрирован
-
Посещение
-
Победитель дней
41
Весь контент Tumaso
-
Давайте не мериться, у кого сколько проектов на FMX у меня это первый, и надеюсь, что не последний Уточняющий вопрос к FREEFAR - а какой путь вы указываете при деплое файлов (которые устанавливаются вместе с приложением) для iOS? Я указываю Startup\Documents\ и в дальнейшем формирую имя файла как TPath.Combine(TPath.GetDocumentsPath, 'имя_файла')...
-
В какой версии делфи у тебя без допнастроек работает? я в берлине upd1 пока с этой проблемой столкнулся
-
Вот у меня и стоит этот вопрос - ГДЕ именно посмотреть/настроить разрешения для программы под iOS? Кстати, вместо Result := TPath.GetDocumentsPath + TPath.DirectorySeparatorChar я использую TPath.Combine
-
Столкнулся с неожиданной проблемой в iOS при работе с файлами: любые попытки чтения существующих файлов из System.IOUtils.TPath.GetDocumentsPath и любые попытки чтения/записи файлов в System.IOUtils.TPath.GetHomePath вызывают ошибку access denied. Где что нужно прописать, чтобы решить проблему работы с файлами?
-
Вот этого не знал (не сталкивался), спасибо за инфу.
-
Я именно так и сделал - у грида сделал прозрачный фон, а для фона нужного цвета использовал ректангл с этим цветом. Это конечно решает проблему, но сразу возникает вопрос - что мешало разработчикам дать возможность задания цвета фона через свойство? Или еще лучше - через обработчик события, по аналогии с событием отрисовки ячейки в гриде? Хотя читая ответы бывших разрабов, могу сразу угадать ответ - "вам этого не надо" (с)
-
Мне требуется заполнить фон грида черным цветом. События OnDrawColumnCell и OnDrawColumnBackground позволяют отрисовывать только области, занимаемые ячейками. А вот где ячеек нет, там фон по умолчанию... Подскажите плиз, как решить проблему? И сразу спрошу - а как сделать прозрачный фон у грида? Чувствую, что совет будет один - использовать стили. А без них возможно?
-
Indy поддерживает, мы как раз и используем GZIP, текстовый трафик JSON жмет вообще хорошо. А вот с SSL у Indy есть проблемы, поэтому и смотрим в сторону THttpClient. От перехода удерживает пока непонятки с поддержкой gzip.
-
А THttpClient поддерживает сжатие трафика с помощью GZIP? Если да, то как настроить?
-
Хорошо, покажи мне как с помощью стилей добиться того же самого эффекта, как: 1. TGlowEffect, учитывая что тень вокруг объекта может через анимацию менять как цвет, так и глубину 2. TInnerGlowEffect, учитывая что цвет может быть либо черным, либо белым. Если использовать картинку в качестве фона, то она масштабируется в зависимости от размеров владельца, а TInnerGlowEffect внутренние отступы держит примерно одинаковые вне зависимости от размеров владельца.
-
Мои дизайнеры придумали такой эффект - текущий фрейм начинает уменьшается в размерах и у него увеличивается прозрачность. У появляющего фрейма наоборот - он начинает терять прозрачность и одновременно увеличиваться в размерах. Удалось реализовать, но не на всех телефонах быстро работает. Для реализации потребовалось, чтобы фреймы были чуть больше, чем форма
-
Эффекты смены фреймов можно и без TTabControl сделать, было бы желание
-
Однозначно использовать фреймы, т.к. TTabControl однозначно съест всю память телефона. Причем в самый неподходящий момент.
-
TButton я не использую, из визуальных компонентов использую только TRectangle, TImage, TEdit, TLabel, TShadowEffect, TGlowEffect, TInnerGlowEffect, еще TScrollBox. Часть изображений применяю сразу к TRectangle, если нужно использовать эффект закругленных углов (т.е. когда XRadius и yRadius больше 0, TImage их у родительского TRectangle игнорирует, не помогает даже ClipChildren у прямоугольника) В чем беда - у TRectangle и TImage нет свойств .Images и .ImageIndex, получать изображения из TImageList приходится вручную. Не проблема, но хотелось бы это делать также просто, как у TButton. Про загрузку файлов в рантайме в TImageList - да, этот вариант не пришел мне в голову, каюсь.
-
-
Узко мыслите, коллега. Картинки используются не только на кнопках, а еще как фоновые картинки на фреймах, локализация изображений для разных стран (все помнят про разный символ земного шара в разных странах?) и т.д, вариантов применения статических изображений в приложении миллиард. А 50 Мб не предел, у дизайнеров UI в моей компании очень много идей. По идее TImageList и должен брать на себя всю черновую работу по работе с изображениями, чтобы не приходилось использовать свои TList<TImage>, не правда ли?
-
нет, речь про андроид суть в том, что когда я делал var LBitmap: TBitmap; begin LBitmap := TBitmap.Create; try LBitmap.LoadFromFile(LSomeFileName); // здесь ок, загрузка успешна // начинаем что нибудь делать с этим битмапом в андроиде, получаем экспешн finally LBitmap.DisposeOf; end; end;
-
Да, я сначала использовал именно TObjectList<TBitmap>, но столкнулся с тем, что на андроиде у TBitmap не было выделенного дескриптора, а если использовать bitmap у TImage, то всё ок. Честно скажу, что гуглил мало, возможно что то не допонял / не доделал.
-
Так суть TImageList в том и состоит, что он является коллекцией изображений. И конфигурируем мы его как правило именно в design-time, не? А если его нельзя использовать для управления 50 Мб картинками, то возникает вопрос необходимости использования этого компонента в принципе. Отключить в IDE сохранение истории конечно можно, но зачем тогда люди старались, делали такую фишку? Мне иногда пригождается. И да, я переделал работу с картинками - картинки хранятся в файлах, я их загружаю при старте приложения в TList<TImage> (вернее какие то изображения сразу, какие то при необходимости, какие то после использования в памяти уничтожаю). Работает быстро, проблемы тормозов при разработке нет.
-
На stackoverflow описано решение этой проблемы. Суть в том, что мы принудительно заставляем Indy использовать OpenSSL вместо BorinSSL: 1. добавляем в project deployment для андроида 2 файла: libcrypto.so и libssl.so (взять их можно на https://forums.embarcadero.com/thread.jspa?threadID=211147), в качестве Remote path для обоих файлов указываем .\assets\internal 2. убеждаемся, что в .dpr модуль System.StartUpCopy указан самым первым 3. при запуске приложения вызываем IdOpenSSLSetLibPath(TPath.GetDocumentsPath) примечание к версии SSL - на файлы по ссылке из п.1 Google не выдает предупреждений, а на более старые версии будет ругаться
- 46 ответов
-
- delphi fmx
- ssl
-
(и ещё 2 )
C тегом:
-
Функционал TImageList конечно хорош, но совершенно невозможно становится работать, когда в TImageList в designtime загружено например 50 Мб изображений и больше. IDE просто начинает вставать, например просто выделение любого компонента на экране может длится 5 секунд (и это на весьма и весьма хорошем компе), в папке __history общий размер версий файла формы начинает измеряться в гигабайтах.
-
Пользователь может изменить качество эффектов, но уж очень хочется облегчить всем жизнь. Пользователь должен запустить программу, а она по умолчанию не тормозит В общем я решил измерять производительность при старте, как раз висит splash-форма как заставка (она создает главное окно и после создания переключает на него и делает его главным), пользователю придется чуть дольше подождать запуска. Думаю это не проблема. Суть идеи - у меня приложение построено на фреймах, которые динамически создаю/уничтожаю. И как раз стартовый фрейм является небольшой демкой возможностей, там используется много эффектов и разных компонентов. Поэтому я создаю этот фрейм, делаю предзагрузку стилей всем компонентам фрейма (этот способ взял на этом же форуме, автор Ярослав). После этого создания фиксирую время, за которое создается скриншот этого фрейма (т.е. использую MyFrame.MakeScreenshot). И уже на основании потраченного времени оцениваю производительность железа при работе с графикой. type /// <summary> /// Производительность оборудования /// </summary> THardwarePerformance = ( /// <summary> /// Высокая производительность /// </summary> performanceHigh, /// <summary> /// Средняя производительность /// </summary> performanceMedium, /// <summary> /// Низкая производительность /// </summary> performanceLow ); function DetectPerformance(AImage: TImage): THardwarePerformance; var LTemp: TBitmap; begin // измеряем производительность оборудования CreateFrame(modeWelcome); // существующий в другом коде метод, создающий нужный фрейм LTime := Now; LTemp := Frames[modeWelcome].MakeScreenshot; try AImage.Bitmap.SetSize(LTemp.Width, LTemp.Height); AImage.Bitmap.CopyFromBitmap(LTemp); finally LTemp.DisposeOf; end; LTime := Now - LTime; // оцениваем производительность if LTime < EncodeTime(0, 0, 0, 300) then Result := performanceHigh else if LTime < EncodeTime(0, 0, 2, 0) then Result := performanceMedium else Result := performanceLow; end; Протестировал на доступных телефонах, пока определяет верно
-
Всем привет. Никто не задавался вопросом динамического определения аппаратной скорострельности работы мобильного телефона? Суть в том, что в своем приложении я использую TGlowEffect и TInnerGlowEffect. Смотрится хорошо, но на слабых телефонах тормозит, а на мощных все работает как надо. Как бы извернуться, чтобы динамически при старте определить, слаб ли телефон для эффектов и при необходимости их просто отключить? Прописывать конкретные модели некошерно, их минимум 5 тысяч, хотелось бы программное решение.
-
Действительно, почему то после подключения 4х устройств в берлине частично слетело SDK. Возможно из за того, что ранее новые телефоны еще не подключались к этому компу, и при установке драйверов берлин был запущен. Ярослав, спасибо за подсказку.