Лидеры
Популярный контент
Показан контент с высокой репутацией 09.12.2016 во всех областях
-
ANDROID не приходят PUSH Уведомления
dnekrasov и 2 других отреагировал Равиль Зарипов (ZuBy) за вопрос
Такс, начнём с этого: Project Options Entitlement List Recieve Push Notification = true Version Info apiKey = server_key (из консоли) uses секция в private секции формы пишем процедура для получения и отправки токенов на сервер событие OnServiceConnectionChange событие OnReceiveNotificationEvent AndroidManifest.template.xml Ваша реализация может отличаться, т.к. у меня работа с FCM выполнена на PHP3 балла -
Друзья! Fast Reports и я лично поздравляем вас с наступающими праздниками! Искреннейше желаем вам безбажного года и интересных проектов! А еще, в связи с праздниками у нас скидка на ВСЕ продукты аж 50% вот здесь! С нетерпением ждем вас в стройных рядах наших кастомеров! Напоминаю, что если вы испытываете трудности в работе с нашими компонентами - мы будем рады помочь вам на страницах форума! Команда FR3 балла
-
баг в компоненте TBluetoothLE
Pax Beach отреагировал Равиль Зарипов (ZuBy) за вопрос
Я не проверял код, но попробуйте. копируем себе в проект файлик System.android.Bluetooth.pas, он расположен по пути source\rtl\net\ далее находим constructor TAndroidBluetoothGattListener.Create(const ALEDevice: TAndroidBluetoothLEDevice); и заменяем на это constructor TAndroidBluetoothGattListener.Create(const ALEDevice: TAndroidBluetoothLEDevice); var retry: Integer; status: Boolean; begin inherited Create; FGatt := ALEDevice; // вставляем наш код retry := 5; status := False; while (not status) or (retry > 0) do begin status = FGatt.FJGatt.requestMtu(тут значение); dec(retry); end; end; если в этот момент уже есть доступ к интерфейсу JBluetoothGatt, то все получится. проверять не на чем, так что дальше сами1 балл -
баг в компоненте TBluetoothLE
Равиль Зарипов (ZuBy) отреагировал Rusland за вопрос
Наверное ничего из этого не поддерживает BLE1 балл -
Проблема с планшетом Lenovo a8 50LC. Вот этот ответ помог. Тут готовый apk (потом удалю его) EditTest.zip1 балл
-
ЧАВО: Опишу "багофичу" на которую я наткнулся. Предположим что вы пишете свой компонент, наследуемый от TStyledControl (или любого другого компонента, который происходит от TStyledControl), для доступа к элементам стиля обычно используют FindStyleResource('ИмяРесурса') (есть вариант в виде FindStyleResource<Класс>('ИмяРесурса', Переменная)) , например компонент TImageControl получает Image так: procedure TImageControl.ApplyStyle; begin inherited; if FindStyleResource<TImage>('image', FImage) then UpdateImage; end; И FindStyleResource работает отлично, пока в дереве стиля искомый объект лежит на НЕ TStyledControl-ах, то есть FindStyleResource будет успешно находить объект, который расположен на TRectangle, но не найдет его же, но на TPanel! Пример: Код, в процедуре ApplyStyle: procedure TEsImageSelection.ApplyStyle; var T: TControl; begin inherited ApplyStyle; if FindStyleResource<TControl>('selection', T) then ShowMessage('"selection" founded!'); end; Что делает данный код? - При нахождении стилевого объекта выдает соответствующее сообщение. Рассмотрим стиль: Как видите в варианте A, "Selection" лежит на НЕ наследнике TStyledControl. Запустив программу можно убедиться что FindStyleResource<TControl>('selection', T) найдет объект "Selection". В варианте B, при запуске можно с удивлением обнаружить что FindStyleResource<TControl>('selection', T) не находит объект "Selection"! Почему так? Судя по исходникам поиск во вложенных TStyledControl-ах сломан специально, дабы не всплывали еще большие глюки\проблемы.(но я не изучал вопрос очень подробно, во внутренний код работы с загрузкой и поиском стилей - кромешный ад, с наслаиванием истории Fire-Monkey разных лет). Как можно обойти проблему? Я нашел следующее решение: (Однако я совершенно не уверен в отсутствии побочных эффектов, возможно @Brovin Yaroslav сможет прокомментировать его?) Данный код находит искомый стилевой объект, в отличии от FindStyleResource. procedure TEsImageSelection.ApplyStyle; var T: TControl; begin inherited ApplyStyle; T := nil; EnumObjects( function (Obj: TFmxObject): TEnumProcResult begin if Obj.StyleName.ToLower = 'selection' then begin T := TControl(Obj); Result := TEnumProcResult.Stop; end else Result := TEnumProcResult.Continue; end); if T <> nil then ShowMessage('"selection" founded!'); end; Процедура-замена FindStyleResource, работает как ожидается: type TOpenStyledControl = class(TStyledControl); function EsFindStyleResource(Self: TStyledControl; StyleName: string): TFmxObject; var StyleObject: TFmxObject; begin // если Self.ChildrenCount < 1 то в компоненте не загружен стиль, // т.к. известно что главный эллемент стиля ВСЕГДА находиться по нулевому индексу. if (TOpenStyledControl(Self).ResourceLink = nil) or (Self.ChildrenCount < 1) then Exit(nil); StyleObject := nil; Self.Children[0].EnumObjects( function (Obj: TFmxObject): TEnumProcResult begin if Obj.StyleName.ToLower = StyleName.ToLower then begin Result := TEnumProcResult.Stop; StyleObject := Obj; end else Result := TEnumProcResult.Continue; end); Result := StyleObject; end;1 балл
-
Что не так с FindStyleResource и что делать.
Error отреагировал Brovin Yaroslav за вопрос
Костыль: Self.Children[0] - Объект в стиле, использующий стиль может его и не загрузить, но при этом иметь вложенные контролы. Поэтому физически у него еще нет стиля, но один контрол внутри есть. (Подсказка, смотреть ResourceLink)1 балл -
Описание TfgSignature - Получение подписи на устройстве
Martifan отреагировал Brovin Yaroslav за тема
Описание: Назначение: Получение подписи клиента в графическом виде. Позволяет получить векторную подпись клиента на устройстве и сохранить ее в файл с любым разрешением Поддерживаемые платформы: 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) Скриншоты:1 балл -
Событие при входящем звонке
Rionn отреагировал Andrey Efimov за вопрос
Со свежей головой. В дополнение к предыдущим замечаниям. Ну понеслась... Что это такое? BroadcastReceiver.Add('android.intent.action.READ_PHONE_STATE'); Зачем это? var telephonyService: JObject; telephonyManager: JTelephonyManager; ... begin outputResult:= #13#10; telephonyService := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE); telephonyManager := TJTelephonyManager.Wrap((telephonyService as ILocalObject).GetObjectID); Где определение статуса? (EXTRA_STATE_RINGING) В общем, я внёс некоторые правки в ваш код и всё работает, но далее только в раздел Ищу подрядчика или ищите того, кто вам бесплатно реализует вашу задачу (сомневаюсь, что такие найдутся). Call2.zip1 балл