Лидеры
Популярный контент
Показан контент с высокой репутацией 24.06.2016 в Сообщения
-
[DX10.1][Android][TMultiView] Как убрать белую полоску у TMutiView?
Евгений Корепов и 3 других отреагировал Brovin Yaroslav за вопрос
Здравствуйте, В стиле компонента TMultiView (MultiViewStyle), есть объект "DropLine", содержащий цвет этой линии. Просто задайте цвет Null и линия пропадет.4 балла -
В начале пару новостей: Репозиторий клонируется также на ГитХаб. Можно устанавливать с помощью 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=master3 балла
-
Telega π - Библиотека для работы с Telegram Bot API в Delphi
МихаилЪ чайковЪ и ещё один отреагировал rareMax за тема
Автор: Максим Сысоев Репозиторий: 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/c7281f443f481115b7643116535e697d2 балла -
У меня почему-то умирает приложение, я так подозреваю, что в момент, когда приходит сигнал от устройства. Последнее сообщение в 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 балла
-
iOS фоновом режиме
Kitty и ещё один отреагировал Равиль Зарипов (ZuBy) за вопрос
они работают на пушах2 балла -
[Андроид] две версии приложения
Равиль Зарипов (ZuBy) и ещё один отреагировал krapotkin за вопрос
там же не label меняется, а package. по нему система идентифицирует приложения можно сделать например так для разных Config com.company.myprog com.company.myprog.beta2 балла -
iOS фоновом режиме
zairkz и ещё один отреагировал Равиль Зарипов (ZuBy) за вопрос
какая версия ios у вас? возможно это добавили только с 9+ когда я сворачивался у меня не отключался сенсор и была назойливая запись (об этом говорил master webs) Но тогда я не тестил эту возможность, т.к. были косяки с неправильными размерами формы из-за верхнего отступа. Как только будет берлин, обязательно попробую2 балла -
Вызов приложения из нофитикейшена
Равиль Зарипов (ZuBy) и ещё один отреагировал Kitty за вопрос
Большое спасибо за информацию! Речь не идет о том, чтобы спамить пользователя. Пользователь установил мобильное приложение торгового центра (кофейни) сознательно, чтобы иметь выгоды (скидки, купоны, распродажи). На уровне кода можно сделать, чтобы сообщение от конкретного маячка приходило однократно в сутки. Торговый цент может быть нашпигован маячками (у каждого магазина свой). Определять границы зон магазинов через службы позиционирования, наверное, сложная задача. Или, например музей, гуляя от картины к картине, на телефоне срабатывает аудиогид (видела такое в живую). P.S. Раз на вооружение iBeacon уже берут и используют McDonald’s, Tesco, Macy’s и другие, то это, наверное, все же перспективно.2 балла -
StatusBar Color
Pax Beach и ещё один отреагировал Равиль Зарипов (ZuBy) за тема
нам из делфи доступно сделать только полупрозрачный цвет никак, не используйте светлые цвета для окраски Пока лучшего результата не смог достичь2 балла -
Вызов приложения из нофитикейшена
Евгений Корепов и ещё один отреагировал Andrey Efimov за вопрос
В общем, копался тут в исходниках (по другому вопросу), а потом забрёл в семплы и ... iBeacon в сервисе возможен, как оказалось есть даже пример C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\AndroidBeaconServiceDemo. Видимо, вам остаётся только ждать, когда добавят сервисы в C++, либо попробовать переписать всё на Delphi.2 балла -
TUITabControl
МихаилЪ чайковЪ отреагировал Кривяков Виталий за тема
Добрый день! В теме про наш продукт http://fire-monkey.ru/topic/1519-1c-papyc-mobilnoe-prilozhenie-dlia-masterov-priemschiko/ меня просили поделиться исходным кодом компонента TabControl с поддержкой слайда табов пальцем. С удовольствием делюсь В составе архива сам компонент и пример его использования. FMXUI.zip1 балл -
1 балл
-
Вызов приложения из нофитикейшена
Kitty отреагировал master webs за вопрос
там же в демках можно найти проект для симуляции маячка ил можно скачать с 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 балл -
Вызов приложения из нофитикейшена
Kitty отреагировал master webs за вопрос
вся проблема не в маячке а в самой работоспособности демки она не работает в виде маячка я использую iphon 4s а сканер и сервис проверяю на samsung tab pro так вот сканер отлично работает а сервис не отрабатывает сам компонент не работает вот и хотел узнать может кто собрать демку и проверить у себя может я что не так делаю хотя там правок никаких нет кроме как ( сделать build и добавить сервис в приложение)1 балл -
KeyStore
Kitty отреагировал Brovin Yaroslav за вопрос
Добрый день, Не на русском, но ответ был: http://docwiki.embarcadero.com/RADStudio/XE8/en/Creating_a_Keystore_File1 балл -
Так давайте я проверю работу готового сервиса. У меня есть реальный маячок. Мне трудно самой придумать архитектуру. Например, так реализовано у сети кофейн Starbucks. Пользователь приходит, телефон его приветствует, считает частоту его приходов и т.п. делает выводы и предлагает разного рода плюшки. Это наблюдала несколько месяцев назад в гостях на одной из выставок тут: http://художественныесокровища.рф/ Была выставка с этой технологией. Народ ходил от картины к картине и слушал инфо из телефона. Были мною замечены маячки...1 балл
-
Window in Panel
zairkz отреагировал Равиль Зарипов (ZuBy) за вопрос
ну сделать также как в 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 балл -
Изучила пример: 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 балл
-
но есть приложении которые работают фоновом режиме Facebook и почти все банковские приложении их когда сворачиваешь геолокация остаётся включенным1 балл
-
))) вот это и называется энергосбережение. отрубаясь - отрубайся1 балл
-
если не верите, запустите яндекс.навигатор и потом сверните, через некоторое время откройте, геопозиция будет та на которой закрыли. такова архитектура ios, это не android, где все можно, тут спроектировано умело все!1 балл
-
Cool App Winner: FrameForge Previz Studio
Kitty отреагировал Brovin Yaroslav за тема
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 балл -
Как управлять ProgressBar с помощью Timer-а ?
Gallouglass отреагировал krapotkin за вопрос
Я уже 25 лет пишу программы по ТЗ. Давайте обратимся к ТЗ... Интервал срабатывания таймера задан в чем? - в миллисекундах. Ставим галочку пункт 1. По тикам таймера... Приведенный код - обработчик "тиков" таймера. Галочка пункт 2 Сдвигать progressBar. Тут двояко можно толковать. Можно реально сдвигать прогресс-бар, можно двигать текущее значение в нем. Первый вариант слишком экзотичен, поэтому думаем про второй Value := Value + 1; Галочка три. Задание выполнено точно в соответствии с ТЗ, в сроки, определенные договором. Подпись. печать.1 балл -
Вызов приложения из нофитикейшена
#WAMACO отреагировал master webs за вопрос
в корне не правильный подход если нет статистики по устройствам пользователей можно потерять очень большую часть аудитории для владельцев сервиса и потерять много клиентов за того что нет возможности собрать проект на ios хотя по факту он будет сделан да и по оборудованию не так дорого выходит я когда начинал сидел на хакинтоше с виндой на виртуалке и с iphone 4s и могу навести простой пример делал приложения для 4х московских интернет магазинов по их статистике с яндекс метрики заходы на сайты были 60 % ios, 30% браузер и только 10% android все 4 сайта сидят в топ 10 яндекса и гугла1 балл -
Вызов приложения из нофитикейшена
#WAMACO отреагировал master webs за вопрос
дело в том что изначально ibeacon был разработан для ios android запустил в след свои аналоги https://ru.wikipedia.org/wiki/IBeacon и сделал совместимость с ibeacon может быть от сюда и ноги растут а так да для ведра как вариант только сервис который будет в фоне мониторить маячки ито на хабре есть статья где был мониторинг по месту нахождения устройства и времени события P.S. к месту магазина можно привязать есть же определения по wifi/сотовой сети gps определили место дали уведомление и человек сам запустит приложение как вариант https://www.ibeaconrussia.ru/blog/ibeacon-na-android/ был не прав в сервисе приложение не нуждается все должно делать само ведро на уровне операционки1 балл -
1 балл
-
Закрытие клавиатуры
Brovin Yaroslav отреагировал krapotkin за вопрос
1 балл -
StatusBar Color
Brovin Yaroslav отреагировал Abdi Pranoto за тема
i had analyzed your code, and its use Android API as well.... you're good....1 балл -
StatusBar Color
Brovin Yaroslav отреагировал Равиль Зарипов (ZuBy) за тема
put into Content new TRectangle with align := MostBottom and color := claBlack OnResize: Content.Margins.Bottom := 0;1 балл -
StatusBar Color
Brovin Yaroslav отреагировал Abdi Pranoto за тема
very nice, but how to change the navbar color to default?1 балл -
Отображение в виде плиток
afors отреагировал Равиль Зарипов (ZuBy) за вопрос
Предыстория была такая: Изначально такие плитки были сделаны на 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 балл -
Вопрос по компонентам
Pax Beach отреагировал Равиль Зарипов (ZuBy) за вопрос
Вот так делал для себя PresentedButtonsRecalPosition.7z1 балл -
1 балл