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

brunnengi

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

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

  • Посещение

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

    21

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

  1. Здравствуйте. Использую TPie что бы вывести круговую диаграмму. И возник вопрос как разместить текст в видимой области. Сейчас вот так: А хочу вот такой результат: Как такое сделать? p.s. в середине, поверх pie лежит tcircle, поэтому такой вид. если кто то знает как сразу у pie сократить "хвостик" то поделитесь пожалуйста.
  2. Запихивать в TImage это обязательно условие? Или можно в TLayout?
  3. Здравствуйте. Если накидать в run-time несколько компонентов в TVertScrollBox, то при первом прокручивание идёт притормаживание. Зато когда прогонишь/проскролишь туда сюда, то всё становится более менее плавно, по крайней мере рывки в прокручивание уходят. Подскажите как от этого можно уйти, избавиться?
  4. Здравствуйте. Требуется удалить созданные в run-time'е Layout'ы с их содержимым. Все они имеют родителя TVetScrollBox; Для удаления использую следующий код: VertScrollBox4.Content.DeleteChildren; Однако опираясь на два топика этот и вот этот, возник вопрос о корректности использования данного когда как на windows платформе, так и на android'е. Подскажите можно ли использовать такой подход для удаления дочерних элементов у TVertScrollBox? Очищает ли он память на всех платформах корректно или требуется ещё что то?
  5. Здравствуйте. Дано: -TTabControl ∟TabItem1 ∟Button1 ∟TabItem2 Нажатием на Button мы переключаемся на вкладку TabItem2 и вызываем поток. Внутри потока в процедуре Synchronize мы переключаемся обратно на вкладку TabItem1. procedure ThreadSending.Sync; begin f.TabControl1.GotoVisibleTab(0, TTabTransition.Slide, TTabTransitionDirection.Reversed); end; procedure ThreadSending.Execute; begin try finally Synchronize(Sync); end; end; Проблема в том, что если тип анимации стоит "TTabTransition.Slide", то с очень высокой вероятностью вкладка не будет переключена, а останется на той же где и была. Более того, если на этой вкладки были компонеты с анимацией, то они залипают, т.е. анимация останавливается. А если изменить на "TTabTransition.None" то все отрабатывает как часы. Как побороть этот недуг?
  6. Ну про использование Start я в курсе. Мне интересен именно новый подход и метода. В доках шепчут вот что: > TThread.Suspend and TThread.Resume are deprecated: -Proper thread synchronization techniques should be based on System.SyncObjs.TEvent and System.SyncObjs.TMutex. Also, see Freezing and Thawing Threads in the Debugger. > New classes for thread synchronization: atomic operations on data shared between multiple threads -- TInterlocked, locking mechanisms -- TSpinWait, TSpinLock. Я так понимаю что изменился сам подход к запуску потоков и сама работа потока. Но примеров с описанием типичных вариантов найти не смог. Так что, ещё раз прошу, если кто то знает как, то поделитесь знаниями пожалуйста.
  7. Здравствуйте. Раньше работал с потоками примерно так: var th : SomeThread; begin th := SomeThread.Create; th.FreeOnTerminate := true; th.Resume; end; Но теперь многие методы стали deprecated. Приведите кто нибудь, пожалуйста, пример того, как теперь правильно под FMX работать с потоками?
  8. Что то я ума все равно не смог дать. Пишет: [FireDAC][Phys][ODBC][Microsoft][Диспетчер драйверов ODBC] Источник даных не найдне и не указан драйвер, используемый по умолчанию При том что на XE6 с dbf файлы открывались. Если не тяжело, выложите исходники. Может я что то упускаю.
  9. Здравствуйте. Есть видео файл. При использование на форме mediaPlayerControl'а он воспроизводит видео поверх всего. Т.е. если взять TabContol и создать в нём две вкладки - TabItem1 и TabItem2 и в TabItem2 поместить MediPlayerControl с играющим видео, то даже если мы в процессе переключимся на на вкладку TabItem1, видео все равно будет видно. Сам видеоряд состоит из 150 кадров. Размер 600ш на 840в. Т.е. я могу конечно раскадрировать файл. Но что мне потом использовать для адекватного отображения на форме? Я так понимаю что даже BitmapListAnimation мне тут не помощник, ибо, насколько я помню, у него есть свои ограничения на размеры. Так что мне тогда использовать?
  10. Извиняюсь за долгое отсутствие (были проблемы с выходом в сеть интернет). Написание своего компонента аниматора - я не затащу такой квест, скорее всего. Может есть гайд по созданию подобного компонента, аниматора всмысле? А вообще я наверное приведу пример того что именно я хочу в итоге, а то мне кажется что просто аниматором тут не обойтись. Да и в целом совет требуется. 1. Заголовок (на меняющийся задний фон внимание не обращайте, это выдрано с видео-презентации HUD) Вот хочется создать компонент, который при enabled:=true отрисовывался, как в самом начале и плавно название (caption) вверху появилось бы. При изменение text надпись появлялась бы так же, как и строчки снизу. Ну и конечно "уход со сцены", как в самом конце. 2. Предупреждения Вот у них тоже три стадии - появление, работа и уход. Вот на примерах ниже ухода нет, так как в самой видео-презентации не представлен, но он по сути как и появление только наоборот. 3. Текстовые поля. С функциями как у memo например, но с эффектами появления Конечно, в первую очередь я решил наделать много "кадров" и запихать их в TBitmapListAnimation, но тогда программа станет весьма груженной и мне кажется что это в целом плохой путь. К тому же через TBitmapListAnimation масштабирование будет не возможным. А значит требуется использовать "векторный" подход. Я прав в своих рассуждениях, касательно векторного варианта? И куда копать и что делать, что бы получить желаемый результат? Я бы и в разделе "создание компонентов" отписался бы, но сейчас даже не знаю как ТЗ сформировать.
  11. Здравствуйте. Подскажите пожалуйста, а есть ли механизм для реализации аминирования отрисовки TPath? Т.е. как нарисовать хотя бы линию слева направо с анимацией?
  12. Сразу извиняюсь сам не тестил, но может просто положить сверху TLayout, в него TText или TLabel. Будет слой поверх видео, а в нем уже текст с ценой.
  13. Тема еще актуальна. Раньше использовал модуль Bde.DBTables Но сейчас его нет. Что вместо него?
  14. Здравствуйте. Как изменить цвет отдельного пикселя, а точнее сделать его полностью прозрачным? Например в image загруженная картинка. И надо пиксель с координатами x75 и y50 сделать невидимым.
  15. Здравствуйте. Получаю путь с помощью TPath.GetHomePath, который возвращает следующую строку: /data/data/com.embacadero.XE7XreateDir/files Попытался создать в этой директории папку "myDir" с помощью ForceDirectories(TPath.GetHomePath+'/myDir'); Однако папка не создалась. Подскажите плз, как сделать правильно.
  16. Здравствуйте. Кинул на форму TLocationSensor, сделал его Active. И кинул Timer которые каждые 10 секунд делает вот так: Memo1.Lines.Add('Latitude: '+f.LocationSensor1.Sensor.Latitude.ToString); Memo1.Lines.Add('Longitude: '+f.LocationSensor1.Sensor.Longitude.ToString); Вот если выхода в сеть интернет нет, то координаты он не показывает, хотя GPS включен. Стоит включить WiFi (с выходом в инет), сразу показывает координаты. А выключаю, и всё, ничего кроме NAN, не выводит. Подскажите пожалуйста как получать координаты без выхода в инет?
  17. С одной стороны, да, гнать бажное ПО это не комильфо. То тут, то там выплывают баги/фичи. Т.е. количество выпущенных версий и апдейтов растёт, а количество багов не меняется. Хотя может это сообщение на эмоциях писано. С другой стороны Embacadero стоит признаться самим себе в том, что они не могут писать ПО без багов и надо понять что это нормально - все пишут бажное ПО. Выпускается действительно много девайсов, у всех свои версии, свое железо, а еще есть надстройки от самих компаний, которые также дают свои "поправки". И в целом даже полугодичный выпуск становиться слишком долгим периодом для тех кто ждет исправлений или новшеств. Ну и конечно ценник на новую версию не маленький. И многие делают большие пропуски в покупках, ибо нет желания (не то что возможности, а именно желания уже нет) платить за новые версии, в которых ждут новые баги. В итоге покупают скорее всего (Embacadero виднее конечно) через одну, две, а то и через три версии. Все остальные используют ломанные версии. А всё вместе это ведет к упущенной выгоде в Embacadero. В очередной раз прошу Embacadero обратить внимание на политику продаж лицензий у UDK4. Вы регистрируетесь на сайте. Оплачиваете 19$/мес, и скачиваете launcher. Через launcher можно скачать примеры (платные и бесплатные), а также саму среду UDK4. Самое главное что сразу в лаунчере доступны обновления с новыми фишками и исправленными ошибками, т.е. там так и идет - версия 4.0.1, 4.0.3, 4.0.4. И можно скачать новую если хотите и если ваша подписка не истекла. У Embacadero уже есть зачатки подобного - это AppMethod. Но он обновляется исключительно по выходу новых версий или апдейтов. Хотя было бы куда лучше если у тех кто имел подписку была возможность получать обновления сразу. Насколько я помню в ХЕ7 было исправленно почти 2000 багов. Но всем пришлось ждать выхода новой версии. Разработчики не в один миг же, в день перед релизом, их исправили, они шли к этому день ото дня. Так почему же по такой схеме не выкладывать версии и патчи по мере исправления багов - 10 багов исправили и выложили. Исправили в 1 баг в неделю, тоже выложили. Есть и еще один момент, обоюдно удобный для клиента и разработчика - это доступность бета версий. На свой страх и риск их можно скачивать. Есть конечно и такая фишка, не думаю что Embacadero пойдет на неё, но все же - это то что даже после окончания подписки, среда всё еще доступна. Просто вы больше не можете получать обновления, готовое ПО не может быть использовано в коммерческих целях и нельзя писать в тех поддержку и отписываться о багах. Но по прежнему доступен офф. форум. Да и может убрать это безумное количество типов Pro, Enterprise и разделение по платформам и т.д.? Не уверен, но мне кажется что изжило себя - это раз, а во вторых для компании поддерживать их после выпуска новых версий наверное геморно. Могу привести пример себя - даже если я не пользуюсь UDK4 каждый день, я всё равно оплачиваю каждый месяц 19$, так как я не могу знать когда он мне понадобиться или когда у меня появиться время, но он должен быть доступен в любой момент. Учитывая что ломанные версии все равно есть, то может Embacadero стоит хотя бы попробовать такой подход, отказаться всегда успеют. А если выстрелит и получиться? Извините за адский оффтопик.
  18. Спасибо, но как я уже писал, что код я уже сделал путем его усложнения. И конечно же почти таким же методом. Вообще на Andoid (именно для него я делал эту анимацию и на Win не проверял), возникала проблема другого рода, иногда (редко), анимация приводила не к точным значениям (150 и 80), будь то просто AnimationFloat или AnimationFloatWait. И по итогу значение не было 150, и даже не было 150.000000147 или типа того, бывало и вот так - 149,999989..... Для решения пришлось использовать только AnimationFloatWait, и сразу следом за ним делать Height := 150.00; Итогом всего этого стало самовольное решение уйти от такого подхода в программе в целом, ибо если уже все не так изящно, как хотелось бы, то значит надо пересилить себя и искать иной поход. Ну и кстати по другому оказалось куда удобнее и быстрее.
  19. Вообще я тоже с этим столкнулся, правда во время анимации. И из-за "длинного хвоста" анимация срабатывала не всегда. Не сразу понял почему. Анимация делалась для Андроид приложения. Нажимая на Recntangle он увеличивался в высоту с плавной анимацией, а при повторном нажатии возвращался в исходное состояние. Так вот в коде на нажатие шло сравнение в духе if Heigh = 80 then AnimationFloat('Heigh', 150); if Heigh = 150 then AnimationFloat('Heigh', 80); Ну и как следствие оказалось что не всегда 80, это именно 80, бывает и 80,000139 и т.к. разные вариации были. Пришлось код усложнить малость. Так что о таких вещах надо помнить.
  20. А как вывести картинку сразу в TImage? А то ошибки сыпет. Т.е. чтобы приведенный код заработал я добавил в Uses пару модулей Winapi.Windows, Vcl.Graphics. И как следствие при попытке присвоить результат функции MakeWindowScreenShot к TImage я получаю: E2010 Incompatible types: 'FMX.Graphics.TBitmap' and 'Vcl.Graphics.TBitmap' Ну или если пытаюсь сделать так: Form1.Image1.Bitmap.Assign(VCLBitmap); То получаю: Cannot assign a TBitmap to a TBitmapOfItem.
  21. Опираясь на тот факт что встроенный splashscreen всё таки даёт правильный результат, я делаю вывод что косяки сажаем мы. Я конечно не отрицаю что вряд ли должна быть связь между splashscreen'ом и итоговым отображением формы, и что это требует лечения, но всё же мысль о том что дефолтный вариант пашет, говорит о нашем не правильном подходе. Замечу также, в тот день когда я полез на радостях изучать сплэш скрины в XE7 вот этой ссылки http://docwiki.embarcadero.com/RADStudio/XE7/en/Using_9-patch_Images_in_Android (поправьте плз ссылку) там не было. Ну а теперь по делу. Ниже ссылка на проект где всё пашет как надо и сплэш и отображение формы: http://ovrload.ru/f/31207_xe7splashscreentest1.zip - это полная вместе с папкой Android, на всякий случай, если нижняя ссылка не попрет http://ovrload.ru/f/31208_xe7splashscreentest1_cut.zip - без папки Android Проект создан заново. Из твоего скопировал только raw картинки белые и tabcontrol. Не могу сказать что четко осознаю что именно помогло, однако что я сделал: Создал с помощью утилиты 9.png файлы Не стал создавать в папке файл splash_image_def.xml Открыл в IDE раздел Deployment и снял галочку с splash_image_def.xml Переименовал все Remote Name у splash картинок в splash_image_def.9.png Ну вроде всё.
  22. Скинь плз чистый проект. Я имею ввиду что у меня проблем таких не возникало. Но хочу именно твой пример, потому что ты сам знаешь что баги иногда тока под определенным "углом" вылезают. А про Layout сказал, так как я замечаю что иногда без него, то VertScrollBox моргает, то элементы "просвечивают" где не надо. Поэтому предложил ради теста.
  23. Эмм, а разве я сделал что то не так? Т.е. я читал конечно ту ссылку, еще тогда когда озадачивался этой проблемой, иначе я бы и не знал о ninepng. Если я делал что то не так, то поясни плз.
×
×
  • Создать...