Доска почета


Popular Content

Showing most liked content since 30.03.2016 Во всех областях

  1. 19 likes
    Ссылка: http://yaroslavbrovin.ru/object_life_cycle_in_delphi_part_1_windows_osx-ru/ Автор: Ярослав Бровин С появлением мобильных платформ в мире Delphi, произошли серьезные изменения в жизненном цикле объектов. Послужившие причиной многих проблем и вопросов, а как правильно кроссплатформенно удалять объекты. В этой статье детально рассматриваем жизненный цикл объектов на разных платформах и даём ответы на важные вопросы, которые могут побеспокоить даже опытных Delphi разработчиков.
  2. 15 likes
    Эх, попкорн закончился) Доброго вечера всем. Вот вы тут развели ср..., прям диву даешься. Неужели тут кто то всерьез верит, что Rad Studio похоронят - вы чего? СМена кадровой политики - абсолютно нормальное явление в любой организации, которая не сидит на месте. Другой вопрос - что послужило толчком? Но не суть. Тут прочитал - вот мол никто на FMX не пишет - вы судите по тому, сколько информации (удивленный смайл). Неужто кто то всерьез думает, что солидные компании, которые базируются на Rad Studio, будет трубить на каждом углу - смотрите, у нас софт написан на Rad Studio? (если быть точным, то с использованием, не придирайтесь)) ЗАЧЕМ оно им? С такой ценовой политикой, достаточно нескольких сотен пользователей для безбедной жизни, хотя думаю их в разы больше. А вот про баги и тд - улыбнуло. Есть у меня опыт небольшой работы и с FMX под ANdroid, и куда больший по десктоп, естественно под VCL. Есть опыт с плюсами и шарпом на Visual Studio тоже под десктоп. Ну и Qt немного. И судя по своему скромному опыту, еще вопрос - где больше багов, когда начинаешь копать глубже. Тута вон галку снял, и софт с 99% уверенностью запустится у всех, а Visual Studio - без опыта, один процесс настройки зависимостей проекта в новых версиях - тот еще гемморой. А потом начинаешь пользователям долбить - скачайте рантайм, а вот еще ддлку эту, а у вас версия Фреймворка не та))) Адекватно собрать статически слинкованный Qt мне так и не удалось, точнее удалось под MinGW - не впечатлило. Похоже многие забыли - FMX, Rad, Visual, pascal, c++, c#, и тд, и тп - это только инструмент, все зависит от того, кто его держит. Kitty - мне очень интересно - отчего такая потребность - закопают или нет? А кто мешает перебраться, в случае необходимости в другую среду - знания то лишними не будут. Напоминает покупку первой машины - месяцами выбирают (количество критериев зашкаливает - и чтоб то не сломалось, и не устарело, и тд), в итоге покупается что то непотребное, просто из-за подхода, при этом количество нервов потраченных...) вы же не на всю жизнь покупаете) Так и тут - ну случится беда, закопают - так правильно сказали: может через пару лет и Андроид гавкнет - что теперь не писать под него. В крайнем случае можно на время перебирания в другую среду остаться на старой версии. Хотя, вынужден извиниться, возможно у вас действительно вперед смотрящие, долгосрочные проекты, тогда стоит думать сейчас (ни в коем случае не сарказм). Но положа руку на сердце, поверьте - выбор то не велик, к сожалению, когда дело доходит до чего - то большего, чем Hello World. P.S. не первый год пытаюсь переползти в Visual Studio - именно написание кода там куда более комфортное, но увы - так и не смог) сошелся на Dll-ках, из Visual Studio, и основе в Rad Studio - довольно удобно и комфортно.
  3. 14 likes
    Ссылка на скачивание (Только для RAD Studio Berlin): fgx_0.7.1.112.zip Инструкция по установке: "Инструкция по установке набора компонентов FGX" FGX - Donate: QIWI: 4890 4941 7671 0929 Yandex.Money: 4100175510891 Описание Эта версия включает в себя следующий набор компонентов: Дизайнер итемов - дизайнер итемов. TfgToast - класс отображения быстрых сообщений TfgFlipView - слайдер изображений. Поддерживает несколько способов переключения фотографий при помощи эффектов и сдвигов. При первом использовании ОБЯЗАТЕЛЬНО прочитать инструкцию "TfgFlipView - Инструкция загрузки стиля" TfgPositionAnimation - анимация свойств типа TPosition TfgPosition3DAnimation - анимация свойств типа TPosition3D TfgBitmapLinkAnimation - анимация свойств типа TBitmapLink TfgProgressDialog (UPDATED) - Компонент для отображения диалогового окна в момент выполнения длительной фоновой операции, когда время выполнения фоновой операции можно оценить. TfgActivityDialog (UPDATED) - компонент для отображения диалогового окна в момент выполнения длительной фоновой операции, когда время выполнения операции не возможно адекватно оценить. TfgActionSheet (UPDATED) - Аналог контекстного меню для мобильных платформ. TfgColorsPanel - Палитра цветов с возможностью выбора цвета. TfgGradientEdit - Компонент выбора градиента. TfgLinkedLabel - Метка поддерживающая открытие Web ссылки в браузере по умолчанию. TfgApplicationEvents (UPDATED) - компонент с возможностью легко задать обработчики на основные события приложения: Отслеживание смены состояния приложения, простой, обновление и выполнение действий Actions, Изменение ориентации устройства и тд. TfgVirtualKeyboard - компонент облегчающий работу с виртуальной клавиатурой. Позволяет задать пользовательские кнопки над виртуальной клавиатурой под iOS, а так же отлавливать события по отображению и скрытию клавиатуры. Зарегистрированы все стилевые объекты на вкладке "FGX: Style objects" Список изменений TfgActionSheet: Добавлены и реализованы события TfgActionSheet.OnShow, TfgActionSheet.OnHide, TfgActionSheet.OnItemClick. Добавлены свойство TfgActionSheet.Theme, позволяющее выбрать вариант темы: Auto - выбирает темную или светлую тему автоматически на основании текущего стиля; Light - использует светлую тему; Dark - темную Обновлен пример ActionSheetDemo. TfgApplicationEvents - добавлены новые событии: OnActivityResult (Андроид) - позволяет получить результаты/интенты из других приложений. OnFormBeforeShown - вызывает непосредственно до момент отображения формы OnFormActive - Вызывается, когда форма активируется. OnFormDeactivate - Вызывается, когда форма деактивируется OnFormCreate - Вызывается после создания экземпляра формы OnFormDestroy - Вызывается до разрушения формы OnScaleChanged - Вызывается, когда меняется скейл у формы. Например, при перетаскивании формы с одного экрана с одним скейлом на другой с другим скейлом (Больше актуально для OSX) TfgProgressDialog, TfgActivityDialog: Добавлены свойство Theme, позволяющее выбрать вариант темы: Auto - выбирает темную или светлую тему автоматически на основании текущего стиля; Light - использует светлую тему; Dark - темную. Общие изменения: Ассерты перенесены в скоп TfgAssert.
  4. 13 likes
    Уважаемые форумчане! Поздравляю Вас с Наступающим Новым Годом и Рождеством! Пусть 2017 год станет новым этапом на Вашем пути и принесет успех, самореализацию и, конечно же, счастье.
  5. 13 likes
    Здравствуйте! Предлагаю подробно и с готовыми рецептами подготовить специализированный курс по ListView. C типовыми шаблонами решения часто встречающихся задач: онлайн обновление списка, эффективная работа с БД, тонкая настройка вида компонента, "подводные камни" использования, типичные ошибки использования! Ждем голосов! Чем больше их будет, тем быстрее Ярослав запустит данный курс!
  6. 12 likes
    Описание: Назначение: Получение подписи клиента в графическом виде. Позволяет получить векторную подпись клиента на устройстве и сохранить ее в файл с любым разрешением Поддерживаемые платформы: Windows, OSX, Android, iOS Демо проект: Samples\SignatureDemo\SignatureDemo.dproj Доступен с версии: R102 Возможности: Экспорт подписи в файл или поток с любым разрешением (TfgSignature.SaveToFile, TfgSignature.SaveToStream). При этом в файле подпись кадрируется, то есть пустые не заполненные области справа, слева, сверху и снизу игнорируются. Доступно изменение точности записи подписи (TfgSignature.TrackingAccurancy). Возможность получить в процентах степень заполнения подписи клиента (TfgSignature.CalculatePercentFilling, TfgSignature.IsValidSignature) Возможность установить цвет (TfgSignature.Stroke) Возможность задать цвет заднего фона (TfgSignature.Brush) Доступно редактирование длительности отображения уведомления (TfgToast.Duration) Возможность менять глобальные параметры отображения всех тостов в рамках приложения (TfgToast.DefaultBackgroundColor, TfgToast.DefaultMessageColor и TfgToast.DefaultPadding) Скриншоты:
  7. 11 likes
    По первому фото слева на право: @kami @Brovin Yaroslav @RoschinSpb @Error
  8. 11 likes
    Большое спасибо Ярославу, что находит время и фиксит проблемы, которые мы тут поднимаем. И курсы его великолепные! Спасибо профессионалам, таким как ZuBy, который терпит наши глупые вопросы и помогает. СПАСИБО!!!
  9. 11 likes
    Ссылка на скачивание (Только для RAD Studio Berlin): fgx_0.7.1.118.zip Инструкция по установке: "Инструкция по установке набора компонентов FGX" FGX - Donate: QIWI: 4890 4941 7671 0929 Yandex.Money: 4100175510891 Описание Эта версия включает в себя следующий набор компонентов: Дизайнер итемов - дизайнер итемов. TfgToast (UPDATED) - класс отображения быстрых сообщений TfgFlipView - слайдер изображений. Поддерживает несколько способов переключения фотографий при помощи эффектов и сдвигов. При первом использовании ОБЯЗАТЕЛЬНО прочитать инструкцию "TfgFlipView - Инструкция загрузки стиля" TfgPositionAnimation - анимация свойств типа TPosition TfgPosition3DAnimation - анимация свойств типа TPosition3D TfgBitmapLinkAnimation - анимация свойств типа TBitmapLink TfgProgressDialog (UPDATED) - Компонент для отображения диалогового окна в момент выполнения длительной фоновой операции, когда время выполнения фоновой операции можно оценить. TfgActivityDialog (UPDATED) - компонент для отображения диалогового окна в момент выполнения длительной фоновой операции, когда время выполнения операции не возможно адекватно оценить. TfgActionSheet (UPDATED) - Аналог контекстного меню для мобильных платформ. TfgColorsPanel - Палитра цветов с возможностью выбора цвета. TfgGradientEdit (UPDATED) - Компонент выбора градиента. TfgLinkedLabel - Метка поддерживающая открытие Web ссылки в браузере по умолчанию. TfgApplicationEvents - компонент с возможностью легко задать обработчики на основные события приложения: Отслеживание смены состояния приложения, простой, обновление и выполнение действий Actions, Изменение ориентации устройства и тд. TfgVirtualKeyboard - компонент облегчающий работу с виртуальной клавиатурой. Позволяет задать пользовательские кнопки над виртуальной клавиатурой под iOS, а так же отлавливать события по отображению и скрытию клавиатуры. (UPDATED) Зарегистрированы все стилевые объекты на вкладке "FGX: Style objects" Список изменений TfgActionSheet: Добавлен новый вариант темы Theme = Custom и свойство ThemeID, позволяющий для андроида указать идентификатор своей темы диалога. Теперь доступна возможность создать свой вариант диалога для андроида. Изменен порядо срабатывания событий OnCancel, OnHide в реализации на iOS. Раньше срабатывали OnHide -> OnCancel, Теперь: OnCancel -> OnHide Обновлен пример Общие улучшения в читабельности кода TfgProgressDialog, TfgActivityDialog: Добавлен новый вариант темы Theme = Custom и свойство ThemeID, позволяющий для андроида указать идентификатор своей темы диалога. Обновлен пример Общие улучшения в читабельности кода TfgGradientEdit: Добавлено событие OnPointRemoved, срабатывающее, когда точка удалена из градиента. Обновлен пример TfgToast: Исправлена ошибка на iOS, приводящая к AV при многочисленном отображении тостов. (Спасибо Сергею Пьянкову за найденную ошибку) Регистрация стилевых объектов: Теперь регистрируются только те объекты, которые не добавлены в палитру.
  10. 11 likes
    Ссылка: http://delphifmandroid.blogspot.ru/2016/04/blog-post.html Автор: Андрей Ефимов Описание: Автоматическая смена названия приложения в зависимости от языка системы
  11. 10 likes
    Сделал пример приложения для работы с Microsoft Word из приложения Delphi. Такое приложение может использоваться для обмена данными между объектами семейства Microsoft Office. Исходные коды приложения помогут вам понять, как работать с объектной моделью Microsoft Word. Чтобы лучше разобраться с нюансами Word, предлагаю ознакомиться со справочником Word VBA reference на MSDN. Проект создан в среде FireMonkey Delphi Berlin 10.1 Протестирован в MS Word 2010, 2016, Windows 7x64 и 10x64. Чтобы посмотреть пример, просто распакуйте zip-файл проекта и щелкайте по порядку кнопки на форме. Скачать Delphi Word Test WordTest.zip
  12. 10 likes
    Ссылка: http://blog.rzaripov.kz/2017/02/firebase-android-ios.html Автор: Зарипов Равиль @ZuBy Описание: Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS
  13. 10 likes
    Ссылка: http://blog.rzaripov.kz/2017/01/blog-post.html Автор: Зарипов Равиль @ZuBy Описание: Онлайн-сервисы в помощь разработчику по дизайну
  14. 10 likes
    Думаю пришло время и мне рассказать (еще) об одном своем проекте на FMX. С вашего позволения наименование программы убрал из описания. *******:ЕГАИС - это приложение для предпринимателей, которым необходимо (согласно новым требованиям закона) подтверждать любое движение алкоголя через систему учета ЕГАИС (Единая Государственная Автоматизированная Информационная Система). *******:КАССА - очень простой front-office для предпринимателей. Полная поддержка ЕГАИС и 54-ФЗ (об онлайн кассах). Работает с фискальными регистраторами АТОЛ, ШТРИХ-М и Viki-print. Сайт: https://www.ami-soft.ru/ Приложение для Android: ЕГАИС-приход Сейчас не развивается. Все усилия на WIndows версию. Но оба приложения используют единые формы и код. Прямая ссылка для загрузки ДЕМО-версии Используются: Delphi Berlin 10.1 upd 2 FireDac SQLITE FastReports FMX2 Parse (пока для системы активации, в разработке личный кабинет для пользователей с выгрузкой чеков и документов) Адаптировано для сенсорных экранов. Есть платные и бесплатные функции. Платных пользователей на 09.01.2017 - 1021. Программа позволяет: Подключение к УТМ по ip адресу или имени компьютера, возможность переключения между УТМ Просмотр входящих документов поставки алкоголя. Краткая информация о строках документа - сумма документа, поставщик, наименование товара Подтверждение, расхождение или отказ от получения накладной в ЕГАИС (платная функция) Запрос повторной отправки накладной на ее номеру Запрос всех неподтвержденных накладных Подтверждение или отказ приема накладной по ее номеру в ЕГАИС Отражение статуса накладной в системе ЕГАИС Отображение остатков в ЕГАИС по 1 и 2 регистру Списание продукции в ЕГАИС по данным остатков или приходной накладной Отправка актов постановки на баланс на 1 и 2 регистр Инвентаризация остатков в магазине Возврат поставщику, перемещение и продажа Передача товара в магазин и возврат на склад Работа с классификаторами товаров и партнеров в ЕГАИС Просмотр перечня служебных документов обмена (при включении режима Эксперт) Просмотр XML содержимого документов для анализа ошибок (при включении режима Эксперт) Автоматическое определение вашего ФСРАР ИД (уникального идентификатора по системе ЕГАИС)
  15. 10 likes
    Поздравляем Ярослава с Днем рождения! Благодарим за титанические усилия, которые он по собственной инициативе, не "благодаря", а скорее "вопреки", прилагает для развития нашего сообщества. Желаем не только профессионального благополучия, но и личного счастья! Ура, товарищи!
  16. 10 likes
    несколько дней убили с Андреем (Andrey Efimov) на решение этой задачи За что ему большое спасибо, он доделал до рабочего варианта вот результат использовать fmx.zip скопировать fmx.dex.jar в папку с проектом далее по картинке компилируем и ждём пуш
  17. 10 likes
    Предыстория была такая: Изначально такие плитки были сделаны на Button'ах (стиль) и TPresentedScrollBox. Но как только пошло дело в тест основательный идею тут же выбросил. 120+ элементов выключили телефон (samsung ace2 duos) при отрисовке, точней при динамической загрузке картинок. да и в целом вся эта беда работает медленней чем реализация на TListView Я не художник, но смысл вроде передал Пример: У нас есть 12 элементов,и 4 колонки Можно в LV отрисовывать дополнительные "контролы" и поместить в один реальный айтем, 4 виртуальные панельки (в нашем случае) Для того чтобы такое получилось: 1) ListView должна при ресайзе рассчитать сколько колонок она может иметь (ширина LV / на ширину одной панельки) 2) дальше Вам нужно будет разбить отрисовку Itema на 4 панельки 2.1) тоже самое проделать и при выделении 3) При таком подходе не будет стандартных элементов отображения (Text, Detail, Image и прочее нужно выключить) Добавление Itema будет проходить в два цикла: первый добавляет реальный Item (0-2), а второй заполняет данными наши поля в панельках (title1, price1, bitmap1, title2, price2, bitmap2 и тд...) 4) Ну и самое важное в OnUpdateObjects все это отрисовать Надеюсь вам это поможет!
  18. 9 likes
    Доработал компонент. Добавлено: Поддержка Tint эффекта - TfgRatingBar.TintColor Автоматический размер - TfgRatingBar.AutoSize Режим только отображения - TfgRatingBar.ReadOnly Событие окончательного изменения рейтинга (отжатие пальца от экрана или кнопки мышки) - TfgRatingBar.OnChange Событие в процессе изменения рейтинга - TfgRatingBar.OnChanging
  19. 9 likes
    Ссылка: http://blog.rzaripov.kz/2016/12/3-modernlistview.html Автор: Зарипов Равиль @ZuBy Описание: Реализация динамической подгрузки контента: Бесконечный скроллинг (например как лента в ВК) Паджинация/Пагинация (постраничная загрузка)
  20. 9 likes
    Ссылка: http://blog.rzaripov.kz/2016/11/0-modernlistview.html Автор: Равиль Зарипов @ZuBy Описание: Знакомство с ModernListView
  21. 9 likes
    Коллеги, всем привет! Сначала хочу всех немного успокоить. Часто бывает, что в команде (а то и в сборной) по футболу меняют тренера, ведущих игроков, стратегию игры и т.д. Для футбола это - нормально. Нормально ли это для разработки софта? Отвечу комплексно. Сначала скажу, что я - MVP Embarcadero, но работаю я в www.workspad.ru - компании, организованной Сергеем Орликом. Во многом моя работа в Embarcadero до Samsung-а повлияло на то, что Сергей меня взял себе сотрудником - сейчас я занимаюсь развитием международного бизнеса www.workspad.com. Delphi остаётся моим любимым инструментом, недавно я начал писать что-то на блоге, просто жизнь позволила заниматься этим активно. Также мы начали проект TurboCocoa, где мне доверили роль frontman-а. Это такая тулза поверх Delphi, чтобы можно было писать 100% нативные по UI/UX приложения (Mac OS, iOS, Android). Но это - отдельный разговор. Конкретно про IT-бизнес, разработку ПО, зрелость продукта и кадровую политику Embarcadero. Я могу себе позволить её комментировать, т.к. я НЕ сотрудник Embarcadero (that's really impossible from inside). Разработка современного ПО - не вся, а определённого класса - стала настолько зрелой, что может быть правильным образом формализована с точки зрения требований и разбита на изолированный класс задач. Первый небольшой софт писался человеком, который "всё-в-одном", мы знаем, что первые версии Pascal писались одним человеком. Теперь это - большой коллектив. Как только Delphi как продукт стала большой и (!) зрелой, то стало возможным оптимизировать вовлечение специалистов. Это нормально для строительства - каждый новый дом - отдельный релиз. Вот наняли архитекторов, вот - проектантов, вот - бригаду бетонщиков, вот - электриков. А вот - систему кондиционирования взяли у другой компании с их проектом и их монтажом, которые тоже сами кондиционеры не производят. А обслуживать здание будет вообще другая компания (багфиксинг). Поймите правильно - я связан тесными личными отношениями с Егвением Крюковым, Ярославом Бровиным и другими разработчиками Embarcadero. Но есть и объективные процессы, которые лично меня по жизни двигали часто не туда, куда я хотел двигаться сам - есть обстоятельства непреодолимой силы. Т.е. мой анализ - безличностный. Если мы побьём задачи развития Дельфи на составные компоненты, то - да - есть совсем изолированные задачи: - компоненты - компиляторы - надстройки над IDE Возможно, именно такая организация Delphi как открытой среды и явилось причиной модульности не только её самой, но и команды специалистов, её развивающей. Т.е. я бы не стал сейчас резко негативно высказываться (опять же, несмотря на дружбу с разработчиками-Эмбаркадеровцами). Вопрос контрактной схемы развития продукта существует. Например, есть такая компания - SoftServe. Я её знаю ещё со времён Samsung. Потому как эта компания выполняет заказные разработки для крупнейших вендоров в мире, что совсем не вредит продукту. Какие минусы. Конечно, если в основе продукта не стоит узкая команда эксклюзивных архитекторов, то могут быть проблемы. Но, положа руку на сердце, даже FMX уже стала зрелой платформой, архитектурно созданной и отработанной Евгением Крюковым. Вспомним Андерса Хейлсберга. Да и даже Вирта - совсем не обязательно, чтобы он работал в Embarcadero для развития языка Object Pascal. Компоненты - ну тут мы вообще видели, что многие компоненты (наш же всеми любимый FireDAC) как раз и создавался вне Borland/Embarcadero. Компилятор - вообще отдельная песня. Какие плюсы. Плюсы - возможность оптимизировать затраты на разработку. Всякий из нас знает, можно нанять строителей на оклад и на "объем - сделал/получил" - дают существенную разницу в результатах. Более того, это - мировой тренд. Если свой разработчик может "пудрить мозг", то сдельный - не сделал, не получил. Наняли другого. А ещё с внешней рабочей силой можно поддержать любой релизный темп. Нужно упереться и выполнить обещание перед пользователями - до-няняли ещё 10 разработчиков и уложились. Стегать своих сотрудников, работающих на постоянке - бесполезно. Что можно ждать в будущем. В будущем нужно ждать следующего релиза. Не секрет, что у Embarcadero roadmap существенно расходится с релизами. В случае с сторонней разработкой это будет невозможно. Всё будет выполняться точнее. Что по деньгам? Не думаю, что это - вопрос денег. Можно больше вложить и "резче" сделать релиз, чем "растягивать удовольствие годами" (то же Linux-компилятор, я ещё до-Embarcadero это слышал). И получить больше продаж. И более сильные рыночные позиции. В любом случае, контроля над разработкой у Embarcadero теперь больше, а средства - гибче. Нужно посмотреть на следующий релиз.
  22. 9 likes
    Я прокомментирую, но чуть попозже. Обязательно отвечу на все вопросы. На самый главный вопрос на счет форума. Сразу отвечу, форум будет работать в любом случае.
  23. 9 likes
    PowerOff - максимально упрощенное приложение для автоотключения компьютера. Приложение и исходный код можно загрузить здесь: https://github.com/errorcalc/PowerOff Полезно если вы перед сном любите включать ролики на YouTube/музыку/сериалы/фильмы, но засыпаете и они продолжают играть всю ночь, вызывая на утро головную боль... По большому счету утилита была написана и с целью проверить пригодность технологии FireMonkey для разработки - в целом - да, на данный момент, под Windows (и для имитирования UWP интерфейса), это вполне работоспособная технология.
  24. 9 likes
    Пока есть такие благодарные и вежливые люди, то помогать всегда в радость :-)
  25. 9 likes
    В общем я тупо вырезал часть из своего проекта. И создал маленький демо-проект. Работает везде! Хоть на Винде, хоть на Маке, хоть на Андроиде. Думаю - разберетесь. Тем-более, что там все очень просто. В демке сделал только два языка (в моем проекте их 11). Все в Ini-файлах, работает очень быстро. P.S. Все желающие могут использовать как хотят. Можете что-то добавлять, исправлять и т.д. Ну и не забываем делиться с другими... P.P.S. Позже выложу приложение (GUI) для редактирования файлов языков. С автоматическим переводчиком и прочими мелочами, упрощающими редактирование. Test_Translator.zip
  26. 9 likes
    Шаблон проекта с кастомным шрифтом FontAwesome Намного удобней и менее затратно использовать Шрифт с Иконками, чем заботиться о качестве картинок, скейлах, их хранении и загрузке Поэтому давно перешел на шрифты, пару скриншотов (без использования картинок) Seattle CustomFont.7z Berlin CustomFont(Berlin).zip WINDOWS/MACOS - установить шрифт в систему IOS - в деплой добавить шрифт и с помощью IOS9Fix прописать в .plist следующее: ANDROID - в деплой добавить шрифт (Remote Path -> assets\internal) и подключить к проекту измененные файлы FMX.FontGlyphs.Android.pas, FMX.FontGlyphs.pas
  27. 9 likes
    Шаблон для проектов с покраской статус бара для мобильных платформ UPDATE: StatusBarColor.7z UPDATE2: StatusBarColor_update.zip
  28. 9 likes
    Автор: Максим Сысоев Репозиторий: BitBucket Связь со мной: Комментарии в этой теме, ЛС, Телеграмм Telega π - Библиотека для работы с Telegram Bot API в Delphi Если вы решили писать своих ботов для телеграмма - тогда предлагаю вам взаимопомощь: я вам полуготовое решение, а с вас предложения для улучшения, багрепорты. Помощь проекту Вы можете помочь проету: Созданием баг-репортов и запросов новых возможностей Рекламой проекта Жертвоприношения в виде денег Зависимости RAD Studio XE7 - Berlin XSuperObject Примеры Получение Username бота program Project5; {$APPTYPE CONSOLE} {$R *.res} uses TelegaPi.Bot, TelegaPi.Types, System.SysUtils; var Telegram: TTelegramBot; begin Telegram := TTelegramBot.Create({$I TokenTelegramBot.inc}); try { TODO -oUser -cConsole Main : Insert code here } Writeln(Telegram.getMe.Username); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; Readln; Telegram.Free; end. Пример автоответчика Напишите ему "привет" program TelegramServer; {$APPTYPE CONSOLE} {$R *.res} uses TelegaPi.Bot, TelegaPi.Types, System.SysUtils; var Telegram: TTelegramBot; Procedure UpdateHandler(Const Update: TTelegaUpdate); var InputMessage: String; Begin Writeln('--> ', Update.Message.Text); if Update.Message.Text.ToLower.Contains('привет') then Telegram.sendTextMessage(Update.Message.Chat.ID, 'И тебе привет!') End; procedure ReadUpdates; var Updates: TArray<TTelegaUpdate>; MessageOffset: Integer; Update: TTelegaUpdate; Begin MessageOffset := 0; while True do begin (* Задержка перед запросом на сервер *) Sleep(1000); (* Запрашиваем обновления с сервера *) Updates := Telegram.getUpdates(MessageOffset, 100, 1000); (* Если обновлений нет - запрашиваем заново *) if Length(Updates) = 0 then Continue; (* все обновления передаем в процедуру UpdateHandler *) for Update in Updates do begin UpdateHandler(Update); end; MessageOffset := Update.ID + 1; end; End; begin Telegram := TTelegramBot.Create({$I telegaToken.inc}); try { TODO -oUser -cConsole Main : Insert code here } ReadUpdates; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; Readln; Telegram.Free; end.
  29. 9 likes
    Решение данной проблемы Открыть редактор реестр: regedit Заменить значение ключа реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language\InstallLanguage с 0419 на 0409 Установить среду Восстановить значение ключа (2 пункт) с 0409 на 0419.
  30. 9 likes
    Джентльмены, про проблему с инсталляцией на русскую винду, ответственные работники уже поставлены в известность. Разбираются. И ...это... санкции тут не при чем.
  31. 8 likes
    Ссылка: http://yaroslavbrovin.ru/object_life_cycle_in_delphi_part_2_android_ios-ru/ Автор: Ярослав Бровин Продолжаем тему жизненного цикла объектов в мире Delphi, но в этой части рассматриваем эту тему в рамках мобильных платформ Android и iOS. Delphi вводит новый подход к управлению памятью в мобильных платформах. Появляется автоматический подсчет ссылок, который с одной стороны облегчает код разработчика и должен помочь ему, а с другой стороны раскладывает равномерно грабли на пути освоения новых платформ в мире Delphi.
  32. 8 likes
    Ссылка: http://delphifmandroid.blogspot.ru/2016/06/google-play-google-play.html Автор: Андрей Ефимов Описание: Публикация приложения в Google Play
  33. 8 likes
    Компания Embarcadero начинает новую образовательную программу. Целью программы является предоставление бесплатного доступа к средствам разработки RAD Studio, Delphi, C++Builder для государственных школ и университетов. В рамках программы школа или университет может получить: до 15 лицензий RAD Studio Pro для использования в учебном классе с подпиской на обновления. Срок действия - один год. Тип лицензии - Concurrent. до 100 лицензий RAD Studio Pro для студентов/школьников для использования дома для выполнения домашних заданий. Тип лицензий - Workstation. Срок действия - 9 месяцев. Подписка на обновления также включена. Условия продления лицензий и подписки будут определены позднее. Лицензии в данной программе образовательные. Они позволяют использовать продукты только в целях обучения программированию. Любая разработка, в том числе коммерческая, некоммерческая, научная или выполнение внутренних разработок по автоматизации школы/университета с помощью этих лицензий запрещена. Для участия в программе образовательное учреждение должно заполнить форму, подготовить письмо об образовательном использовании и оправить ее в Embarcadero. Для участия в программе требуется прохождение минимальной квалификации и одобрения заявки со стороны компании Embracdero. Также для участия в программе образовательное учреждение обязуется разместить на своем сайте лого Образовательного партнера Embarcadero. Образец лого будет предоставлен позднее. Образовательный прайс-лист сохраняет свое действие. Если учебному заведению нужны постоянные лицензии, большее число лицензий или лицензии другого типа или на другую редакцию продукта, а также если заказчик не попадает в категории "государственная школа" или "государственный университет", то он может воспользоваться действующим прайс-листом. Вложения: EDU_Licence_EMBT_Programm 2016.doc Embarcadero Academic Program Release 8-24-16 RU.DOCX RU Academic License Order Form 070916 .xlsx
  34. 8 likes
    Описание Назначение: Компонент предназначен для отображения группы TRadioButton и осуществления выбор. Поддерживает стилизацию. Поддерживаемые платформы: Windows, OSX, iOS, Android Демо проект: Samples\RadioGroupDemo\RadioGroupDemo.dproj Возможности Стилизация через указание двух картинок отображающих голос и пустой голос Настройки отображения заголовка группы TfgRadiouGroup.TextOptions.TitleTextSettings Возможность выбрать настройки отображения заголовка группы из стиля TfgRadioGroup.TextOptions.StyledTitleTextSettings Настройки отображения текста TRadioGroup TfgRadiouGroup.TextOptions.ButtonTextSettings Возможность выбрать настройки отображения текста TRadioGroup из стиля TfgRadioGroup.TextOptions.StyledButtonTextSettings Текущий выбранный вариант TfgRadioGroup.ItemIndex Возможность разбить варианты на колонки TfgRadioGroup.AlignOptions.Columns Возможность указать отступы для вариантов по вертикале и горизонател TfgRadioGroup.AlignOptions.HorzSpace, TfgRadioGroup.AlignOptions.VertSpace Возможность узнать, когда пользователь делает выбор TfgRadioGroup.OnChanged
  35. 8 likes
    Основатель FMX Евгений Крюков в поисках работы: https://plus.google.com/u/0/105338484741532774705/posts/SnK5twK939Y Основатель FireDAC Дмитрий Арефьев тоже больше не работает. По Вашему мнению какие все же перспективы RAD при такой кадровой политике?
  36. 8 likes
    Компонент LED Panel - светодиодная панель с возможностью вывода текста бегущей строкой. В архив включена демонстрационная программа с исходным кодом. После запуска программы, кнопка с панели задач прячется в трей. LED_Panel.zip
  37. 8 likes
    Обещал вам продемонстрировать возможность записи видео в Android. Представляю решение с исходными кодами (VideoRecord.zip) для изучения этой возможности и использования в своих проектах. На представленном снимке есть 2 главных кнопки: "Modal Intent Record" и "Native Record". Modal Intent Record — удобно использовать в приложениях, потому что запись ведется приложением камеры, поставляемым с телефоном. После съемки в приложение возвращается сообщение о результатах — удачно/неудачно. Native Record — метод на базе интерфейса JMediaRecorder, используется, когда Intent Record не подходит. Например в Local Android сервисе ;-) Пользуйтесь на здоровье. Большая просьба к сообществу — помочь в комментариях с подбором оптимальных параметров записи видео в JMediaRecorder. Установленные сейчас параметры 640х480, и качество видео хромает. Нужно научиться переключать камеры, менять степень сжатия, включать/выключать вспышку, звук затвора. Здесь люди уже подбирали варианты параметров, но нужно протестировать на приложении из RAD Studio. На ресурсе разработчиков Android тема по JMediaRecorder находится здесь.
  38. 8 likes
    1. У колонки можно менять свойство Padding. 2. Grid теперь может быть и стилевым и нативным. В нативном этого события быть не может. Чтобы работать со стилями см. стилевое представление грида TStyledGrid в модуле FMX.Grid.Style.pas. 3. По моему мнению проколом было наличие этих свойств в публичной секции. Grid это составной компонент, он неким образом самостоятельно реагирует на события мыши, если Вы будете делать что-то своё, то ваши действия могут войти в противоречие со стандартным поведением этого компонента и непредсказуемым последствиям. Поскольку грид переписан чуть менее чем полностью я посчитал, что это хороший повод убрать потенциальную уязвимость, здесь указаны все упраздненные события. В этом обсуждении я пытался объяснить что можно сделать. 4. По этому поводу трудно что-то сказать навскидку, пишите в QC, не забудьте приложить простой воспроизводимый пример. 5. Да, дело в совместимости. Фон может содержать картинку, поэтому по умолчанию все ячейки прозрачные. Но, если добавить AlternatingRowBackground в Options, то событие будет вызываться. Также оно вызывается при появлении редактора. Вообще сильно рекомендую посмотреть демку GridDemo, там можно в run-time менять настройки и смотреть в логе все приходящие события. Еще здесь я что-то писал.
  39. 8 likes
    Вы знаете... На самом деле, за последний год изменилось очень многое. Я искренне рад за компанию Embarcadero, и, конечно, за сам продукт RAD Studio. Им есть над чем работать, возможно не хватает ресурсов и т.д. и т.п... Однако на все сложности, думаю, у них очень большие перспективы. Серьезно! На мой взгляд, на сегодняшний день, аналога RAD Studio просто не существует! Его просто нет! Ну вот хоть убейтесь - нет его! И это далеко не только мое мнение. Мнение очень многих серьезных программистов, которые используют и другие IDE и, тем-более, языки (и которые работают в очень серьезных компаниях). И "всепропальщиков" я слышу со времен моей работы с Turbo-Pascal 5.0... ) Недостатки есть у всех! Можно так охаять любую IDE и любой язык, - что мало не покажется. Это касается "любого" (я о всяких студиях... и мелкомягких и корпорацияхдобра)... Вопрос больше в ресурсах, которые есть у компании, чтобы оперативно решать проблемы: баги, обновления, документация, поддержка и т.д... А если говорить непосредственно о FMX, то вообще - все остальные тупо в пролете! И мы говорим о продукте компании, которая катастрофически уступает своими возможностями и ресурсами таким монстрам как Microsoft с их Visual Studio. Сейчас уже все больше и больше и документации и информации и ресурсов по FMX, в частности. Это и китайские ресурсы, и японские и немецкие. Не думайте - что только в постсоветском пространстве популярен Delphi, в частности, и среда RAD Studio. Это не серьезно! ) Китай, Япония, Германия, Франция и т.д. и т.д. Все больше и больше и открытых исходников и разнообразных ресурсов и компонентов. Тот же Boian Mitov - куча компонентов, уникальные инструменты. Большинство - с поддержкой, и под, FMX! (не реклама! ссылок не даю - сами найдете). Уникальный болгарский (если мне память не изменяет) программист - написал и развил огромную библиотеку... И таких как он - много. К чему я все это... А к тому - что изменилось столько всего! что даже не уверен, что об этом вообще надо говорить. А уж я то за ней следил еще со времен библиотеки VG-Scene (Евгения Крюкова) и далее - с самой первой XE... А уж текущий ресурс - считаю один из лучших. Главное - уметь пользоваться! И я полностью согласен с [Kitty] и поддерживаю - благодарю ребят за то, что они создали и ведут этот ресурс!
  40. 8 likes
    Ссылка: http://delphifmandroid.blogspot.ru/2016/09/delphi-android.html Автор: Андрей Ефимов Описание: Это маленькая заметка о том, какие события происходят, когда мы запускаем приложение на Android. В ней я покажу логи из LogCat (с описанием тестов, которые провёл) и мы выясним, какие же события происходят всегда, а какие нет.
  41. 8 likes
    Пишу на Delphi с ноября 1995 года (Delphi 1 под Win 3.11). До этого использовал TurboPascal и TurboC (еще с 1989 года), но как только увидел Delphi - то сразу влюбился в эту среду разработки. В последствии приходилось писать на С++, С#, PowerBuilder, но всегда возвращался на Delphi и каждый раз вздыхал с облегчением Однако в 2009-м уже серьёзно начал склоняться в сторону Java, но с появлением FireMonkey в очередной раз с радостью вздохнул и Delphi стала опять моей основной IDE. Теперь RAD Studio удовлетворяет все мои потребности в плане программирования и больше ни на какой другой язык я даже не смотрю.
  42. 8 likes
    Я использовал ранее только для себя. Я с его помощью получил часть данных в диссертацию и успешно защитился в 2007 году. Помню удивление моего диссертационного совета, когда узнали, что я сам написал эту программу. Совет был по иммунологии/клинической фармакологии. Но со временем мой основной программы продукт понравился многим. И с 2009 года я выпустил первую публичную версию еще на delphi7. С 2015 года полностью переписываю его на FMX, что добавило кроссплатформанности. Мой программный продукт является автоматизированным рабочим местом врача - клинического фармаколога. Самое главное, он абсолютно бесплатный и без рекламы. Пользователи - врачи со всей РФ. Поэтому в опросе наверху я не смог выбрать "как я использую студию".
  43. 8 likes
    Итак, год спустя описываю решение проблемы. Исследования проводил в Берлине, но думаю рецепт подойдет и для младших версий. 1. Ошибка существует в файле FMX.TextLayout.GPU, поэтому копируем его в проект. 2. Убираем мусор при отрисовке кропнутого символа. Ищем в файле следующий фрагмент: ColoredGlyph := TFontGlyphStyle.ColorGlyph in Rec.Glyph.Style; if ColoredGlyph then TCustomCanvasGpu(ACanvas).ModulateColor := $FFFFFFFF; ACanvas.DrawBitmap(Rec.Bitmap, SrcR, R, Opacity); if ColoredGlyph then TCustomCanvasGpu(ACanvas).ModulateColor := LRun.Color; и заменяем его на if not R.IsEmpty then begin // Disable draw empty rect ColoredGlyph := TFontGlyphStyle.ColorGlyph in Rec.Glyph.Style; if ColoredGlyph then TCustomCanvasGpu(ACanvas).ModulateColor := $FFFFFFFF; ACanvas.DrawBitmap(Rec.Bitmap, SrcR, R, Opacity); if ColoredGlyph then TCustomCanvasGpu(ACanvas).ModulateColor := LRun.Color; end; Пояснение: при расчете области отрисовки R символа, мы можем получить "отрицательный размер", где Bottom будет меньше чем Top. Соответсвенно такой же неправильной становиться область источника SrcR и на экран вылазит мусор. 3. От мусора избавились, но если присмотреться к нижней границе текста, то можно увидеть, что отрезка не ровная, одни символы отрезаны больше, другие меньше. Для этого нужно исправить алгоритм расчета области отсечения. Для этого ищем комментарий //Checking for lines lower than bottom border - с него начинается ветка, в которую нужно внести изменения. Чуть далее ищем код Rec := AddOrGetChar(nil, Run.Chars[K], ChDic, Run.Font); X := MaxSize.Y - FFrame.Last.TopLeft.Y - Rec.Glyph.VerticalAdvance * FScaleFactor; и меняем его на Rec := AddOrGetChar(LayoutCanvas, Run.Chars[K], ChDic, Run.Font); X := MaxSize.Y - FFrame.Last.TopLeft.Y - ((Rec.SrcRect.Height + Rec.Glyph.Origin.Y) * FScaleFactor); Здесь пояснения дать сложнее, скажу только, что разработчики проигнорировали тот момент, что символы имеют разные размеры (например . и Ж) и считают отсечение не по размеру глифа символа а по экранному размеру символа, т.е. он будет одинаковый для всей строки, что неправильно, так как в дальнейшем данное отсечение применяется к глифу символа. P.S. А куда переехал CodeCentral, не нашел его в Берлине?
  44. 8 likes
    Ориентировочная дата выпуска Ориентировочная дата выпуска курса - 31 июня 2016 года. Краткое описание Этот курс посвящен использованию стилей в FireMonkey. Стили являются одной из самых главных особенностей FireMonkey, отличающих FMX фреймворк от других. С одной стороны с их помощью вы можете придать своему приложению индивидуальность и добавить визуальную неповторимость. Однако, с другой стороны использование стилей является очень сложной темой и содержит много нюансов, не зная которые, можно потратить много времени на попытку понять причину неудач использования. Тема является одной из самых популярных, поэтому она будет рассмотрена в первую очередь. Что вы будете уметь после прохождения курса? В результате прохождения курса, вы сможете: Создать свой стиль на основе вашего UI дизайна приложения простейшим путем из возможных Редактировать и дополнять уже существующие стили, идущие в поставке с FireMonkey Создавать и использовать уже существующие стили для использования их в своих компонентах Детально понимать, как работает механизм стилей, Понимать, как создать "эффективный" стиль. Стиль, который не будет сказываться на производительности вашего приложения. Сделать действительно кроссплатформенное приложение с точки зрения стилей. Использование разных стилей для разных платформ (Android, iOS, Windows, OSX) Научитесь анализировать типовые ошибки создания стилей и исправлять их в кратчайшие строки. Будете знать технику создания своего стиля для любого стилевого компонента с нуля. На кого рассчитан курс? Курс рассчитан на: Разработчиков, которые начинают использовать FireMonkey. Разработчиков, планирующие использовать стили в своих приложениях. Разработчиков, которые уже использовали стили, но поняли, что это не так просто, как кажется. Состав курса Пока курс находится в процессе разработке, здесь будут представлены только основные темы и вопросы. По мере готовности курса, будет дано детальное описание всех уроков. Что такое стиль, что он из себя представляет? Архитектура стилей: Основные части стилевого механизма, назначения и их взаимодействия (TStyleBook, TStyledControl, TStyleManager). Как происходит процедура загрузки/выгрузки/смены стиля? Изменение стилей на лету. Замена платформенных стилей. Кеш стилей. Достоинства и потенциальные опасные места при проектировании компонента со стилями. Динамическая подгрузка стиля на мобильных платформах. Уведомления. Способы узнать, когда стиль меняется для компонента или формы. Растровые и векторные стили: Назначения Отличия Достоинства и недостатки? Что выбрать? Манипулирование стилем: Доступ к элементам стиля: StylesData, FindStyleResource. Достоинства и недостатки. Какой способ выбрать? Форсирование загрузки и выгрузки стиля Стилизация рамки окна: Структура стиля рамки окна (Windows only) Какие элементы стиля за что отвечают Платформенные стили: Откуда FireMonkey берёт стиль по умолчанию? Как изменить стиль по умолчанию? Где взять исходники дефолтных стилей. Tint эффект Что такое, зачем нужен и в чем его преимущества? Когда стоит использовать Tint, а когда нет? Принципы работы. Настройки, как использовать? Контролы поддерживающие Tint эффект Дизайнер стилей FMX. Принципы работы Знакомство с интерфейсом, Создание нового стиля, Удаление существующего, Смена порядка стилевых объектов (Z-order), Создание нового стиля Редактирование существующего Дизайнер стилей VCL - как один из способов создания FMX стилей. Описание Основные принципы работы Автоматическое создание FMX стиля без необходимости знания структуры стиля с точки зрения FMX компонентов. Получение стилей по умолчанию. Создание стилей для базовых компонентов (TListBox, TEdit, TMemo, TButton, TTabControl) Как узнать структуру стиля для компонента? Фиксация размера (Фиксация высоты, ширины или ширины и высоты) TListBox: Способы создания своих итемов с любыми элементами TEdit, TMemo: TButton TTabControl Анализ типичных ошибок при создании и редактировании стилей
  45. 8 likes
    Статья: http://community.embarcadero.com/blogs/entry/timagelist101ru-1 Автор: Сергей Рощин Обзор новых возможностей, которые появились в компоненте и редакторе TImageList для Delphi R101 (2016 год, Version 24)
  46. 7 likes
    Вышло обновление до версии 1.5.0: - Исправлены переходы в глоссарии - Значительно уменьшен размер приложения - Настройки автоматической проверки обновлений - [Windows] Переработка приложения для Windows - [Windows] Добавлены анимации перехода - [Windows] Минимальные размеры окна ограничены 800 пикселями по ширине и 600 по высоте - [Android] Системная строка подкрашивается в "фирменный" синий во всех режимах работы приложения - [Android] Отключена анимация перетаскивания элементов бокового меню - [Android] Индикатор загрузки - [Android] Навигационная панель больше не перекрывает интерфейс приложения - [Android] Исправлена ошибка с сохранением PDF-документа - [Android] Увеличена скорость вывода информации и тестирования - [Android] Немного изменен внешний вид экрана вывода результата тестирования Ссылка на скачивание Android-версии: https://yadi.sk/d/edIZR2VuuRFce Ссылка на скачивание Windows-версии: https://yadi.sk/d/iIeC0OE8ukMoi
  47. 7 likes
    Вот сделал таблицу с событиями. Добавил в статью Очередь событий Delphi приложения на Android И получилось, что отслеживать сворачивание можно по: OnSaveState aeWillBecomeInactive EnteredBackground Разворачивание: WillBecomeForeground
  48. 7 likes
    Ссылка: https://habrahabr.ru/post/318876/ Автор: Error Описание: Delphi и C++Builder разработчики, использующие VCL не по наслышке знают о вездесущей проблеме мерцания контролов. Мерцание происходит при перерисовке, вследствие того, что сначала отрисовываеться фон компонента, и только потом сам компонент. И если в случае с наследниками от TWinControl частичным решением проблемы является установка свойства DoubleBuffered в True, что заставляет контрол отрисовываться в буфере(однако DoubleBuffered работает тоже не идеально, к прим.: контрол перестает быть прозрачным), то в случае с TGraphicControl решение с DoubleBuffered просто невозможно, из-за отсутствия у TGraphicControl окна, установка же DoubleBuffered в True у родителя не помогает, из-за того что отрисовка вложенных TGraphicControl-ов происходит уже после прорисовки родителя в буфере. Обычно остается только одно — смириться с мерцанием, и максимально упростить отрисовку для минимизации эффекта, или использовать по возможности исключительно TWinControl-ы, что не всегда возможно и удобно. Однажды намучившись с мерцанием, я не выдержал и решил решить эту проблему, раз и навсегда! ...
  49. 7 likes
    Равиль Зарипов предложил отличную мысль - устроить сходку дельфистов в Питере, посидеть где-нибудь, пообщаться Собственно, кому интересно, отпишитесь в комментариях, можно будет в декабре устроить встречу Думаю надо хотябы 5-6 человек.
  50. 7 likes
    Вообщем так как андройд не поддерживает функцию определения соединения, сделал через журнал звонков В Андройде после звонка если было соединение, время звонка будет больше нуля. //PhoneDialerService.OnCallStateChanged := MyOnCallStateChanged; На Disconnected проверяю журнал звонков, так как бывает не успевает падать информация использую таймер с интервалом 1 секунда, ниже приведен код в нем или iOS соединения и все ок или андройд на дисконекте и пуск таймера. procedure TForm_Main.MyOnCallStateChanged(const ACallID: String; const ACallState: TCallState); begin case ACallState of TCallState.Connected: begin {$IFDEF IOS} TThread.Synchronize(nil, ShowDialDialog); {$ENDIF} end; TCallState.Disconnected: begin {$IFDEF ANDROID} TimerCallCheck.Enabled := true; {$ENDIF} PhoneDialerService.OnCallStateChanged := nil; end; end; end; Пока не добавил такую архитектуру с ТТаском и Синхронизацией были иногда вылеты приложения procedure TForm_Main.TimerCallCheckTimer(Sender: TObject); begin TimerCallCheck.Enabled := false; TTask.Run( procedure var Dur: Int64; begin Dur := CheckStat; //Функция проверки журнала TThread.Synchronize(nil, procedure begin if Dur = -1 then TimerCallCheck.Enabled := true else begin TimerCallCheck.Enabled := false; if Dur > 0 then ShowDialDialog; //Вызывается форма у меня в приложении end; end); end); end; function TForm_Main.CheckStat: Int64; var cursor: JCursor; Dtime, CallDuration: Int64; JsortOrder, JSelection: String; wJQueryParams: TJavaObjectArray<JString>; begin Result := 0; wJQueryParams := TJavaObjectArray<JString>.Create(4); wJQueryParams[0] := TJCallLog_Calls.JavaClass.CACHED_NAME; wJQueryParams[1] := TJCallLog_Calls.JavaClass.NUMBER; wJQueryParams[2] := TJCallLog_Calls.JavaClass.DURATION; wJQueryParams[3] := TJCallLog_Calls.JavaClass.DATE; JsortOrder := 'date DESC LIMIT 1'; Dtime := (DateTimeToUnix(Now, true) - 360) * 1000; //Последние пять минут JSelection := 'number = "+77017017708" AND type = 2 AND date > ' + IntToStr(Dtime); cursor := TAndroidHelper.Activity.getContentResolver.query(TJCallLog_Calls.JavaClass.CONTENT_URI, wJQueryParams, StringToJString(JSelection), nil, StringToJString(JsortOrder)); if (cursor.getCount > 0) then begin while (cursor.moveToNext) do begin CallDuration := StrToInt64(JStringToString(cursor.getString(cursor.getColumnIndex(TJCallLog_Calls.JavaClass.DURATION)))); Result := CallDuration; end; end else Result := -1; cursor.Close; FreeAndNil(wJQueryParams); end;
This leaderboard is set to Москва/GMT+03:00