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

Лидеры

  1. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      10

    • Постов

      2 517


  2. Brovin Yaroslav

    Brovin Yaroslav

    Администраторы


    • Баллы

      6

    • Постов

      2 124


  3. krapotkin

    krapotkin

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


    • Баллы

      6

    • Постов

      2 213


  4. master webs

    master webs

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


    • Баллы

      5

    • Постов

      216


Популярный контент

Показан контент с высокой репутацией 24.06.2016 в Сообщения

  1. Здравствуйте, В стиле компонента TMultiView (MultiViewStyle), есть объект "DropLine", содержащий цвет этой линии. Просто задайте цвет Null и линия пропадет.
    4 балла
  2. В начале пару новостей: Репозиторий клонируется также на ГитХаб. Можно устанавливать с помощью Delphinus'a Бот калькулятор для Telegram. А сейчас мы напишем своего бота, который сможет решать арифметические выражения(и не только). Что для этого нужно: Telega π - Библиотека для работы с Telegram Bot API в Delphi TeeBI После установки библиотек свыше - создаем новое консольное приложение. Далее создаем новый модуль(unit) и называем его, например, Telegram.Plugin.Calculator В этом модуле мы будем писать логику калькулятора, а точнее взаимодействие команд от пользователя и модуля выражений BI.Expression(TeeBI). Для наглядности, сразу код модуля: unit Telegram.Plugin.Calculator; interface uses TelegAPI.Bot, TelegAPI.Types, TelegAPI.Utils, TelegAPI.Module; Type TTgCalculatorBot = Class(TTgModule) private FIsCommandWait: Boolean; protected procedure OnUpdate(Sender: TObject; Const Update: TtgUpdate); override; End; implementation uses BI.Expression, System.SysUtils; { TTgWelcomeBot } procedure TTgCalculatorBot.OnUpdate(Sender: TObject; const Update: TtgUpdate); var Cmd: TCommandHelper; Procedure Calculation; var TextExpr: String; Begin FIsCommandWait := False; if Cmd.ParamCount = 0 then TextExpr := Update.Message.Text else TextExpr := Cmd.ParamsToString; try (Sender as TTelegramBot).sendTextMessage(Update.Message.Chat.ID, TExpression.FromString(TextExpr).Value); except on E: Exception do (Sender as TTelegramBot).sendTextMessage(Update.Message.Chat.ID, 'упс, ошибочка вышла: ' + E.ClassName + ' ' + E.Message); end; End; begin Cmd := TCommandHelper.Create(Update.Message.Text); try if Cmd.Command = '/calc' then Begin if Cmd.ParamCount = 0 then Begin FIsCommandWait := true; (Sender as TTelegramBot).sendTextMessage(Update.Message.Chat.ID, 'ожидаю выражение:'); End else Begin Calculation; End; End else if FIsCommandWait then Begin Calculation; End; finally Cmd.Free; end; end; end. Первое на что обращаем внимание - наш класс TTgCalculatorBot будет наследоваться от TTgModule, в котором заложен базовый функционал для расширения функционала бота(на данный момент только получение обновлений от сервера). В метод OnUpdate будут поставляться обновления, которые приходят от сервера, в нем мы и будем работать. Насчет поля FIsCommandWait. Уж так сложилось - что, как правило, пользователь сразу отправляет боту команду - а потом параметры. Поэтому, если придет поддерживаемая модулем команда - мы устанавливаем это поле в True. Если это поле - правда - значит нужно обработать текст. Теперь вернемся к нашему консольному приложению: program CalculatorBot; {$APPTYPE CONSOLE} {$R *.res} uses TelegaPi.Bot, TelegaPi.Types, System.SysUtils, Telegram.Plugin.Calculator in 'Telegram.Plugin.Calculator.pas'; Const C_PAUSE_UPDATE = 1000; { 1sec. } Var TelegramBot: TTelegramBot; TelegramCalc: TTgCalculatorBot; Procedure InitRecesive; var Offset: Integer; Updates: TArray<TtgUpdate>; Update: TtgUpdate; Begin Offset := 0; while True do begin Sleep(C_PAUSE_UPDATE); // Update pause Updates := TelegramBot.getUpdates(Offset); // Get updates if Length(Updates) = 0 then Continue; Offset := Updates[High(Updates)].ID + 1; end; End; begin WriteLn('Telegram Calculator Sample'); { Here you Api key } TelegramBot := TTelegramBot.Create({$I ..\telegaToken.inc} ); TelegramCalc := TTgCalculatorBot.Create(TelegramBot); try WriteLn('Bot token: ', TelegramBot.getMe.ID <> -1); InitRecesive; except on E: Exception do WriteLn(E.ClassName, ': ', E.Message); end; TelegramBot.Free; TelegramCalc.Free; end. TelegramCalc := TTgCalculatorBot.Create(TelegramBot); - во время создания модуля - происходит подписка на сообщения от сервера. Никаких данных программисту передавать не нужно. Далее, что бы консоль сразу же не закрылась - нужно зациклить прием данных от сервера. Пример - в процедуре InitRecesive. Что получаем в итоге: Так же можете сами протестировать бота(если он конечно будет запущен): @test_delphi_api_bot Готовый пример: https://bitbucket.org/uasoft/telegapi/src//examples/PluginCalculator/?at=master
    3 балла
  3. Автор: Максим Сысоев Репозиторий: Github Связь со мной: Telegram Telega π - Библиотека для работы с Telegram Bot API в Delphi Библиотека для работы с Telegram Bot API Зависимости RAD Studio CE CloudAPI Примеры Получение 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. Пример автоответчика Напишите ему "привет" Код: https://gist.github.com/ms301/c7281f443f481115b7643116535e697d
    2 балла
  4. У меня почему-то умирает приложение, я так подозреваю, что в момент, когда приходит сигнал от устройства. Последнее сообщение в monitor, что сервис запущен. А потом: 06-24 20:15:22.894: I/art(5078): Thread[2,tid=5083,WaitingInMainSignalCatcherLoop,Thread*=0xb9c54f00,peer=0x12d200a0,"Signal Catcher"]: reacting to signal 3 06-24 20:15:23.036: I/art(5078): Wrote stack traces to '/data/anr/traces.txt' UPD: А... пардон. Доблестные документаторы забыли дописать, что для приложения нужно установить разрешения на работу с BlueTooth <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> UP-UPD: Все приходит, монитор сообщает о событии в сервисе каждые несколько секунд: 06-24 20:27:29.121: I/info(14450): Beacon1BeaconProximity: {B9407F30-F5F8-466E-AFF9-25556B57FE6D} 06-24 20:27:29.121: I/info(14450): Beacon1BeaconProximity: {B9407F30-F5F8-466E-AFF9-25556B57FE6D} Правда Notification вылетает в StatusBar только по первому событию, а потом, молчит. Думаю, что Bluetooth здесь уже не причем.
    2 балла
  5. они работают на пушах
    2 балла
  6. там же не label меняется, а package. по нему система идентифицирует приложения можно сделать например так для разных Config com.company.myprog com.company.myprog.beta
    2 балла
  7. какая версия ios у вас? возможно это добавили только с 9+ когда я сворачивался у меня не отключался сенсор и была назойливая запись (об этом говорил master webs) Но тогда я не тестил эту возможность, т.к. были косяки с неправильными размерами формы из-за верхнего отступа. Как только будет берлин, обязательно попробую
    2 балла
  8. Большое спасибо за информацию! Речь не идет о том, чтобы спамить пользователя. Пользователь установил мобильное приложение торгового центра (кофейни) сознательно, чтобы иметь выгоды (скидки, купоны, распродажи). На уровне кода можно сделать, чтобы сообщение от конкретного маячка приходило однократно в сутки. Торговый цент может быть нашпигован маячками (у каждого магазина свой). Определять границы зон магазинов через службы позиционирования, наверное, сложная задача. Или, например музей, гуляя от картины к картине, на телефоне срабатывает аудиогид (видела такое в живую). P.S. Раз на вооружение iBeacon уже берут и используют McDonald’s, Tesco, Macy’s и другие, то это, наверное, все же перспективно.
    2 балла
  9. нам из делфи доступно сделать только полупрозрачный цвет никак, не используйте светлые цвета для окраски Пока лучшего результата не смог достичь
    2 балла
  10. В общем, копался тут в исходниках (по другому вопросу), а потом забрёл в семплы и ... iBeacon в сервисе возможен, как оказалось есть даже пример C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\AndroidBeaconServiceDemo. Видимо, вам остаётся только ждать, когда добавят сервисы в C++, либо попробовать переписать всё на Delphi.
    2 балла
  11. Добрый день! В теме про наш продукт http://fire-monkey.ru/topic/1519-1c-papyc-mobilnoe-prilozhenie-dlia-masterov-priemschiko/ меня просили поделиться исходным кодом компонента TabControl с поддержкой слайда табов пальцем. С удовольствием делюсь В составе архива сам компонент и пример его использования. FMXUI.zip
    1 балл
  12. там же в демках можно найти проект для симуляции маячка ил можно скачать с appstore или плеймаркета прикреплю свой проект посмотрите там все просто смотрите там если будете использовать мой пример в настройках нужно будет указать правильный UUID ibeacon.zip p/s а сервис и уменя крутится даже пробовал на ваш сервер логировать кроме запуска так ничего и не попало http://kayfolom.ru/?cmd=read&api_key=biacontestmasterwebs&output_format=json "datetime": "2016-06-24 12:23:19" ето уже работа сканера а не сервиса
    1 балл
  13. вся проблема не в маячке а в самой работоспособности демки она не работает в виде маячка я использую iphon 4s а сканер и сервис проверяю на samsung tab pro так вот сканер отлично работает а сервис не отрабатывает сам компонент не работает вот и хотел узнать может кто собрать демку и проверить у себя может я что не так делаю хотя там правок никаких нет кроме как ( сделать build и добавить сервис в приложение)
    1 балл
  14. Brovin Yaroslav

    KeyStore

    Добрый день, Не на русском, но ответ был: http://docwiki.embarcadero.com/RADStudio/XE8/en/Creating_a_Keystore_File
    1 балл
  15. Так давайте я проверю работу готового сервиса. У меня есть реальный маячок. Мне трудно самой придумать архитектуру. Например, так реализовано у сети кофейн Starbucks. Пользователь приходит, телефон его приветствует, считает частоту его приходов и т.п. делает выводы и предлагает разного рода плюшки. Это наблюдала несколько месяцев назад в гостях на одной из выставок тут: http://художественныесокровища.рф/ Была выставка с этой технологией. Народ ходил от картины к картине и слушал инфо из телефона. Были мною замечены маячки...
    1 балл
  16. Равиль Зарипов (ZuBy)

    Window in Panel

    ну сделать также как в VCL procedure TForm4.Button1Click(Sender: TObject); var aHandle: THandle; begin // uses Winapi.Windows, FMX.Platform.Win aHandle := FindWindow(nil, PChar('VIKI ADMINISTRATOR')); Winapi.Windows.SetParent(aHandle, WindowHandleToPlatform(Self.Handle).Wnd); end; нужно помнить что Handle имеет только форма, в отдельные компоненты нельзя поместить
    1 балл
  17. Изучила пример: C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\AndroidBeaconServiceDemo. Там есть readme.html и там написано: Ну просто красота - в готовое приложение можно добавить сервис: Right-click on the Android device, and select Add Android Service. Размечталась я об кренделях небесных - ну думаю в мой проект на С++ можно добавить службу на Дельфи и наступит счастье. Делаю в своем проекте Right-click on the Android device, and select Add Android Service и... ничего не происходит, просто тишина. Значит чтобы добавить службу на дельфи и само приложение должно быть на дельфи... печалька...
    1 балл
  18. Martifan

    iOS фоновом режиме

    но есть приложении которые работают фоновом режиме Facebook и почти все банковские приложении их когда сворачиваешь геолокация остаётся включенным
    1 балл
  19. krapotkin

    iOS фоновом режиме

    ))) вот это и называется энергосбережение. отрубаясь - отрубайся
    1 балл
  20. #WAMACO

    iOS фоновом режиме

    если не верите, запустите яндекс.навигатор и потом сверните, через некоторое время откройте, геопозиция будет та на которой закрыли. такова архитектура ios, это не android, где все можно, тут спроектировано умело все!
    1 балл
  21. Brovin Yaroslav

    Cool App Winner: FrameForge Previz Studio

    FrameForge Previz Studio is the next winner of our Cool App Contest. Developed in Delphi for Windows, FrameForge is a 3D pre-visualization software package used to create storyboards for use in television, movies and other video production. It is really quite impressive and powerful. I think Luis Navarro, one of our fabulous MVPs and a Cool App contest judge said it great, “FrameForge is really impressive. I liked a lot of other apps in the contest, but FrameForge Previz Studio seems to be a top application in its market. It is a good example of the flexibility of Delphi. If someone can do this using Delphi, then anything can be done using Delphi.” I interviewed Ken Schafer, founder and Lead Program Architect of Innoventive Software about FrameForge and its use of Delphi. He provided a list of some of the components used in FrameForge: Our own DLL written in C++ that supplies all the core 3D OpenGL environment AlphaTools -- Skinning Eurekalog - Trace-log and Exception Tracking GExperts and CNWizards - IDE Plug-ins ImageEn - Image Processing Library KaZip and VCLZip -- Compression Libraries TIEHTTPS -- Internet library WP Tools - Word Processing Engine He also mentioned a few shows that use FrameForge . . . Downton Abbey Marvel Agents of S.H.I.E.L.D. The Flash Pirates of the Caribbean Merlin CSI Leverage Carmen in 3D at the Royal Opera House Orphan Black Downton Abbey and Carmen in 3D and the only shows on the list that I have not seen, yet. [Video coming soon] Просмотр полной статьи
    1 балл
  22. Я уже 25 лет пишу программы по ТЗ. Давайте обратимся к ТЗ... Интервал срабатывания таймера задан в чем? - в миллисекундах. Ставим галочку пункт 1. По тикам таймера... Приведенный код - обработчик "тиков" таймера. Галочка пункт 2 Сдвигать progressBar. Тут двояко можно толковать. Можно реально сдвигать прогресс-бар, можно двигать текущее значение в нем. Первый вариант слишком экзотичен, поэтому думаем про второй Value := Value + 1; Галочка три. Задание выполнено точно в соответствии с ТЗ, в сроки, определенные договором. Подпись. печать.
    1 балл
  23. в корне не правильный подход если нет статистики по устройствам пользователей можно потерять очень большую часть аудитории для владельцев сервиса и потерять много клиентов за того что нет возможности собрать проект на ios хотя по факту он будет сделан да и по оборудованию не так дорого выходит я когда начинал сидел на хакинтоше с виндой на виртуалке и с iphone 4s и могу навести простой пример делал приложения для 4х московских интернет магазинов по их статистике с яндекс метрики заходы на сайты были 60 % ios, 30% браузер и только 10% android все 4 сайта сидят в топ 10 яндекса и гугла
    1 балл
  24. дело в том что изначально ibeacon был разработан для ios android запустил в след свои аналоги https://ru.wikipedia.org/wiki/IBeacon и сделал совместимость с ibeacon может быть от сюда и ноги растут а так да для ведра как вариант только сервис который будет в фоне мониторить маячки ито на хабре есть статья где был мониторинг по месту нахождения устройства и времени события P.S. к месту магазина можно привязать есть же определения по wifi/сотовой сети gps определили место дали уведомление и человек сам запустит приложение как вариант https://www.ibeaconrussia.ru/blog/ibeacon-na-android/ был не прав в сервисе приложение не нуждается все должно делать само ведро на уровне операционки
    1 балл
  25. krapotkin

    Закрытие клавиатуры

    все можно.
    1 балл
  26. krapotkin

    Закрытие клавиатуры

    вообще грид на андроиде так себе решение обычно используется ListView я бы сделал отдельное поле под/над списком, где стоял бы спин-едит и кнопки вперед/назад в этом едите и редактировал бы количество по ТЕКУЩЕЙ строке грида
    1 балл
  27. Abdi Pranoto

    StatusBar Color

    i had analyzed your code, and its use Android API as well.... you're good....
    1 балл
  28. put into Content new TRectangle with align := MostBottom and color := claBlack OnResize: Content.Margins.Bottom := 0;
    1 балл
  29. Abdi Pranoto

    StatusBar Color

    very nice, but how to change the navbar color to default?
    1 балл
  30. Предыстория была такая: Изначально такие плитки были сделаны на 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 все это отрисовать Надеюсь вам это поможет!
    1 балл
  31. Вот так делал для себя PresentedButtonsRecalPosition.7z
    1 балл
  32. zairkz

    TUITabControl

    МУЖИК!!!! Красавчик!!! Респект!!
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...