Перейти к содержанию
  • Регистрация
  • 1
Равиль Зарипов (ZuBy)

vkbdhelper - поднятие компонентов над клавиатурой

Вопрос

Привет Всем!

 

vkbdhelper.pas

 

Force focused control visible when Android Virtual Keyboard showed or hiden
How to use:
place vkdbhelper into your project uses section. No more code needed.

 

Давно пользовался vkbdhelper'ом, но он был только для андроида.

руки добрались и до этого, теперь его можно использовать и на IOS

 

изменения

* почистил uses секцию

* убрал зависимость от платформ (кросс-платформенный)

* добавил глобальную переменную VKOffset

 

VKOffset - расстояние между контролом и клавиатурой

                 для тех случаев когда включены подсказки/автозамена

                 и контрол оказывается под доп. панелькой

 

Не все клавиатуры включают доп. панели в свой размер!

Например для IOS нужно всегда прибавлять 30-32 пикселя, панель с кнопкой Done перекрывает контрол

{$IFDEF IOS}
  VKOffset := 31;
{$ELSE}
  VKOffset := 0; // на свой вкус
  // не знаю как определить размер доп. панельки
  // когда она не входит в размер клавиатуры 
  // и определить есть ли панелька вообще...
{$ENDIF}

vkbdhelper.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

Не совсем понятно как им пользоваться с первого раза. Небольшой пример будет очень полезен

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

 

How to use:

place vkdbhelper into your project uses section. No more code needed.

Как пользоваться:

поместить файл в папку с проектом, прописать в uses желательно в .dpr файле. Всё

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Обожаю вот такую вот реализацию: включил в uses - функционал заработал, исключил - функционала нет, но ни на что другое это не повлияло. И не задумываешься, что "ага, раз мне нужно это, значит еще в 10 модулях нужно переопределить всё подряд и вообще переписать заново".

ZuBy, огромнЕйшее спасибо! Сейчас будем посмотреть, как оно на iOS живет :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Обожаю вот такую вот реализацию: включил в uses - функционал заработал, исключил - функционала нет, но ни на что другое это не повлияло. И не задумываешься, что "ага, раз мне нужно это, значит еще в 10 модулях нужно переопределить всё подряд и вообще переписать заново".

ZuBy, огромнЕйшее спасибо! Сейчас будем посмотреть, как оно на iOS живет :)

да мне то особо не за что, я просто доработал

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Хммм... не совсем отрабатывает на iOS. Позиция меняется, но не на столько, чтобы контрол стал полностью виден. При этом "верхних" тулбаров на клавиатуре нет.

Правильно ли я понимаю, что для использования этого модуля не нужно извращаться, как предложено в "стандартном" способе - класть все контролы на VertScrollBox?

 

Нет, туплю. Тулбар был, всё классно.

Изменено пользователем kami

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

 

Хммм... не совсем отрабатывает на iOS. Позиция меняется, но не на столько, чтобы контрол стал полностью виден. При этом "верхних" тулбаров нет.

тестил на iphone 6, ios simulator все отлично. укажите значение VKOffset которое вам подходит. мне подошло 31

 

 

Правильно ли я понимаю, что для использования этого модуля не нужно извращаться, как предложено в "стандартном" способе - класть все контролы на VertScrollBox?

не нужно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
{$IFDEF IOS}
  VKOffset := 31;
{$ELSE}
  VKOffset := 0; // на свой вкус
  // не знаю как определить размер доп. панельки
  // когда она не входит в размер клавиатуры 
  // и определить есть ли панелька вообще...
{$ENDIF}

А это где записать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

желательно в .dpr файле (Project->View Source) там же объявить .pas файл

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

В модуле есть неточность с определением координат, из-за этого и введено VKOffset.
Дело в том, что координаты клавиатуры получаются абсолютными относительно экрана, а координаты контрола, которому нужно провести позиционирование - абсолютными относительно формы. Сама же форма имеет TopLeft отличные от нуля (шторка).
Нужно преобразование координат клавиатуры относительно формы. В этом случае VKOffset не нужен, т.к. координаты клавиатуры включают в себя тулбар (если он есть).
 
Прикладываю уточненный модуль, оттестировано на iOS. Прошу проверить на Android.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

В модуле есть неточность с определением координат, из-за этого и введено VKOffset.

Дело в том, что координаты клавиатуры получаются абсолютными относительно экрана, а координаты контрола, которому нужно провести позиционирование - абсолютными относительно формы. Сама же форма имеет TopLeft отличные от нуля (шторка).

Нужно преобразование координат клавиатуры относительно формы. В этом случае VKOffset не нужен, т.к. координаты клавиатуры включают в себя тулбар (если он есть).

 

Прикладываю уточненный модуль, оттестировано на iOS. Прошу проверить на Android.

да, для IOS Ваш вариант работает, но для Android не подходит по двум причинам:

1) поднимает контрол выше, чем нужно

2) разные производители на андроиде творят что хотят...

    панель над клавиатурой не всегда входит в эту область, поэтому я и ввел переменную чтобы была возможность это исправить при желании

Для примера на Nexus 5 панель входит в размер, а на HTC не входит

 

Ваш вариант работает медленней, каждый раз поиск формы...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Увы - на андроиде протестировать не могу.

Да, медленнее из-за поиска (а сильно? на IOS Simulator я разницы не ощутил, да и вызывается он однократно при показе).

Однако в стандартной клавиатуре на iOS 9 всегда вверху есть кнопки типа "отменить/копировать" и т.п.

При этом IFMXVirtualKeyboardToolbarService.IsToolbarEnabled возвращает False. В iOS8 такого я не видел.

Т.е. получается, что в iOS9 всегда нужно добавлять VKOffset, а в iOS8 - нет.

 

Зоопарк андроида всегда впечатлял :) Но думается, введением переменной дело в любом случае не ограничить, раз "там включают, а тут не включают" тулбар в размер клавиатуры.

 

По поводу п.1 - а как отрабатывает стандартный способ от Embarcadero?

Изменено пользователем kami

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Немноно не так: если форм много он каждый раз будет искать форму.

И на счёт стандартного способа, это вы про ScrollableForm?

Он также работает как и хелпер без вашего вмешательства))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Немноно не так: если форм много он каждый раз будет искать форму.

Тоже немного не так - он будет каждый раз искать форму при показе клавиатуры. Что, впрочем, и без того проделывается в ScrollInToRect

 

 

И на счёт стандартного способа, это вы про ScrollableForm?

Он также работает как и хелпер без вашего вмешательства))

Совершенно верно, именно про него.

А вот то что он работает как ваш исходный код модуля - не согласен. потому что в ScrollableForm как раз и проводится ScreenToClient для координат клавиатуры в FormVirtualKeyboardShown.

 

Повторюсь - про Android судить не могу, но в iOS правильное позиционирование должно быть именно с ScreenToClient преобразованием координат клавиатуры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

 

Немноно не так: если форм много он каждый раз будет искать форму.

Тоже немного не так - он будет каждый раз искать форму при показе клавиатуры. Что, впрочем, и без того проделывается в ScrollInToRect

 

 

И на счёт стандартного способа, это вы про ScrollableForm?

Он также работает как и хелпер без вашего вмешательства))

Совершенно верно, именно про него.

А вот то что он работает как ваш исходный код модуля - не согласен. потому что в ScrollableForm как раз и проводится ScreenToClient для координат клавиатуры в FormVirtualKeyboardShown.

 

Повторюсь - про Android судить не могу, но в iOS правильное позиционирование должно быть именно с ScreenToClient преобразованием координат клавиатуры.

 

по сути разницы не вижу, у меня просто универсальней и результат тот же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Видимо, у нас разные понятия об универсальности. Ручное задание значения "глобального смещения", имхо, следует считать "тонкой доводкой" исключительно под конкретный тип окружения. Но - ваше право.

Еще раз огромное спасибо за модуль. За сим умолкаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Подцепил vkbdhelper в dpr-е.

На форме в Fill - Bitmap - Bitmap загрузил бэкграунд (png-файл темного цвета 1920х1200), wrap-mode=TileStretch, color=Black.

В центре стоит layout, у которого Align=Center, в нем пара Edit-ов.

 

Так вот когда жму на один из Edit-ов, компоненты как полагается поднимаются, но бэкграунд формы становится светлым - не чисто белый (картинка просто пропадает).

 

Как избавиться от этого? Пробовал и старую и новую версию vkbdhelper.pas - background также пропадает. Для проверки делал invalidate формы - не помогло.

 

PS. Android 5

Изменено пользователем Rusland

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Крайне интересно. Основной принцип этого модуля - если нет скроллбокса, то положить всё, лежащее на форме, на созданный в Runtime TLayout и уже его двигать.

Дык вот, если берем за основу форму из описания Rusland, то кроме Layout-а с какого-то перепугу на форме оказывается TRectangle. Вот из-за его перемещения на Layout изображение и пропадает.

К сожалению, проблема конечно решаема, но только с некоторыми допусками. Совершенно непонятно, как отличить TRectangle, который служит фоновым изображением от TRectangle "своего", который может уже лежать на форме. Может, Ярослав чем поможет?  Вечером постараюсь выложить решение.

 

Вот сейчас пишу это и думаю, что у этого модуля есть один существенный недостаток - девелопер не знает, что после первого показа клавиатуры все его контролы уже лежат на TLayout. Если контролы меняются в runtime, то последовательное показ клавиатуры ->перенос всего на Layout->добавление нового контрола на форму->показ клавиатуры->перенос всего на Layout приведет к такой гребенке из вложенности TLayout-ов, что...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ну вот, собственно, что получилось.
Решение, к сожалению, мне не нравится, поскольку основывается исключительно на том, что этот "левый" Rectangle лежит прямо на форме и имеет Align = Contents.
В остальном - работает.
 
Еще раз заострю внимание на своем предыдущем сообщении - если вы создаете контролы в runtime и выставляете родителем для них саму форму, то пользоваться этим модулем для вас противопоказано.

 

Upd: заменил вложение. Прошу обратить внимание на комментарии в файле, касаемые known issues.

 

vkbdhelper.zip

Изменено пользователем kami

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

kami, попробовал новую версию, теперь срабатывает правильно только в первый раз, затем при каждой активации Edit-а происходит подъем и моментальное возвращение (доли секунды) в то же положение, где изначально стоял Edit.

 

PS. Delphi RX. Android 5.0. Контролов в runtime не создаю.

Изменено пользователем Rusland

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Update. Исправили недостаток на Android 5. Большое спасибо Rusland за тестирование.

Итоговый файл прикладываю.

 

По прежнему не рекомендую использовать этот модуль, если создаваемые в runtime контролы ложатся напрямую на форму.

Перед написанием претензий, пожалуйста прочитайте known issues в комментарии в начале файла.

 

vkbdhelper.zip

Изменено пользователем kami

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

По прежнему не рекомендую использовать этот модуль, если создаваемые в runtime контролы ложатся напрямую на форму.

Перед написанием претензий, пожалуйста прочитайте known issues в комментарии в начале файла.

Решение ведь простое для тех кто в runtime создаёт компоненты, поместить на форму самим TLayout с именем sVKBHelperLayout

и указать Parent у компонентов этот layout

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От Brovin Yaroslav
      Хочу поделиться с вами знаковой новостью для развития библиотеки FGX Native. Официально выпущено первое Андроид приложение в Google Play Market. 
      Это приложение разработано Станиславом(@sinuke) для учащихся лицея по специальности "Почтовая связь". Оно одновременно является и полным конспектом, который всегда под рукой, и системой проверки своих знаний.
      Полностью разработано на Delphi и стандартных компонентах альфа версии FGX Native 0.9.7.0 в Delphi 10.3 Community Edition. Быстрые списки, гибкая разметка, продвинутая навигация, анимации переходов, поддержка тем и многое другое. Это лишь малая часть того, что было задействовано из текущих возможностей библиотеки.
      Приложение опубликовано в Google Play Market. Вы можете уже прямо сейчас скачать и протестировать приложение самостоятельно, загрузив его по ссылке (https://play.google.com/store/apps/details?id=com.sinukeapps.post).
      Оставляйте свои комментарии и предложения. Они помогут сделать приложение лучше, а FGX Native еще удобнее и стабильнее.
      Релиз первого приложения с использование библиотеки FGX Native - это результат огромной работы, проделанной за эти годы. В тоже время, это сигнал того, что библиотека обладает достаточным минимумом для создания типовых Андроид приложений.
      Ну, и пожалуй самое приятное, это то, что библиотека готова к бета тестированию, которое откроется в ближайшее время.  О начале закрытого бета тестирования будет сообщено позже.
      Отдельное спасибо участникам закрытого альфа тестирования за поддержку, тестирование и идеи по улучшению библиотеки. В настоящее время участниками тестирования ведутся и другие интересные проекты на базе FGX Native, о которых я расскажу позже.
      Следите за новостями.
      Приложение: https://play.google.com/store/apps/details?id=com.sinukeapps.post Автор: Станислав Игнатович @sinuke Минимальные системные требования: Android 5.0 и arm v7         
    • От Yarpda
      В серьезных приложениях (Сбербанк-онлайн или Ютюб и т.п.) когда выходят обновления с новыми функциими, они запускают своеобразный интерактивный ролик. Когда экран затемняется и остается не затемненным только новый элемент экрана например, а на затемненном фоне описывается что делает этот новый элемент.Потом все это плавно переходит к другому элементу и т.д. Выглядит все довольно красиво.
      Задался вопросом, как сделать что-то подобное под FMX. Для себя не нахожу никаких очевидных решений.
      Подскажите если кто знает, направления решения этой задачи?
      Заранее спасибо.
    • От RADStudioDeveloper
      Привет всем!
      Есть необходимость в проекте для Android Delphi FMX (RAD Studio 10.2.3 Tokyo / RAD Studio 10.3.1 Rio ) сохранять изображения с фотокамеры смартфона Android через WiFi соединение в удалённую базу данных Microsoft SQL сервера в поле BLOB.
       
      Подскажите, пожалуйста,  возможные решения, примеры Delphi кода и требуемые компоненты для работы с камерой и SQL сервером через WiFi на Android устройствах.
    • От Евгений Корепов
      Простое приложение для андроид - форма, на ней TWebBrowser. В WebBrowser открываем что то требующее разрешение на геолокацию. У примеру https://www.openstreetmap.org 
      В обычном браузере, при тыке на "Показать мое местоположение" появится popup окно с запросом разрешения на "Доступ к данным о вашем местоположении".
      Но в Delphi приложении описанном выше никакого запроса не приходит. ?
      Нашел решение для java https://forums.fusetools.com/t/geolocation-not-enabled-in-webview-on-android/1374 
      В функцию создания WebView 
      public static Object CreateWebView321(final boolean zoomEnabled,final boolean scrollEnabled) { ScrollableWebView wv = new ScrollableWebView(com.fuse.Activity.getRootActivity()); wv.getSettings().setJavaScriptEnabled(true); wv.getSettings().setUseWideViewPort(true); //enabled viewport meta tag wv.getSettings().setLoadWithOverviewMode(true); //mimic iOS Safari and Android Chrome wv.getSettings().setSupportZoom(zoomEnabled); wv.getSettings().setBuiltInZoomControls(zoomEnabled); wv.getSettings().setDomStorageEnabled(true); wv.setAllowScroll(scrollEnabled); return wv; } рекомендуется добавить следующий код
      wv.getSettings().setGeolocationEnabled(true); wv.setWebChromeClient(new WebChromeClient(){ @Override public void onGeolocationPermissionsShowPrompt(String origin, Callback callback) { callback.invoke(origin, true, false); } }); В модуле FMX.WebBrowser.Android.pas это выглядит так
      constructor TAndroidWebBrowserService.Create; var LayoutParams: JRelativeLayout_LayoutParams; begin FWebView := TJWebBrowser.JavaClass.init(TAndroidHelper.Activity); FWebView.getSettings.setJavaScriptEnabled(True); FListener := TWebBrowserListener.Create(Self); FWebView.SetWebViewListener(FListener); FFocusChangeListener := TFocusChangeListener.Create(Self); FWebView.setOnFocusChangeListener(FFocusChangeListener); FWebView.getSettings.setGeolocationEnabled(True); FWebView.getSettings.setAppCacheEnabled(True); FWebView.getSettings.setDatabaseEnabled(True); FWebView.getSettings.setDomStorageEnabled(True); FWebView.getSettings.setBuiltInZoomControls(True); FWebView.getSettings.setDisplayZoomControls(False); FWebViewContainer := TJRelativeLayout.JavaClass.init(TAndroidHelper.Context); FChildrenContainer := TJRelativeLayout.JavaClass.init(TAndroidHelper.Context); LayoutParams := TJRelativeLayout_LayoutParams.JavaClass.init(TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT, TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT); FWebViewContainer.addView(FWebView, LayoutParams); LayoutParams := TJRelativeLayout_LayoutParams.JavaClass.init(TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT, TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT); FWebViewContainer.addView(FChildrenContainer, LayoutParams); SetEnableCaching(True); end; Вот суть вопроса - добавить delphi код. Пробую что то вот такое, но закончить ума не хватает
      constructor TAndroidWebBrowserService.Create; var LayoutParams: JRelativeLayout_LayoutParams; begin FWebView := TJWebBrowser.JavaClass.init(TAndroidHelper.Activity); FWebView.getSettings.setJavaScriptEnabled(True); FListener := TWebBrowserListener.Create(Self); FWebView.SetWebViewListener(FListener); FFocusChangeListener := TFocusChangeListener.Create(Self); FWebView.setOnFocusChangeListener(FFocusChangeListener); FWebView.getSettings.setGeolocationEnabled(True); FWebView.setWebChromeClient( TJWebChromeClient.Create.onGeolocationPermissionsShowPrompt( origin: JString; callback: JGeolocationPermissions_Callback);..... FWebView.getSettings.setAppCacheEnabled(True); FWebView.getSettings.setDatabaseEnabled(True); FWebView.getSettings.setDomStorageEnabled(True); FWebView.getSettings.setBuiltInZoomControls(True); FWebView.getSettings.setDisplayZoomControls(False); FWebViewContainer := TJRelativeLayout.JavaClass.init(TAndroidHelper.Context); FChildrenContainer := TJRelativeLayout.JavaClass.init(TAndroidHelper.Context); LayoutParams := TJRelativeLayout_LayoutParams.JavaClass.init(TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT, TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT); FWebViewContainer.addView(FWebView, LayoutParams); LayoutParams := TJRelativeLayout_LayoutParams.JavaClass.init(TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT, TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT); FWebViewContainer.addView(FChildrenContainer, LayoutParams); SetEnableCaching(True); end;  
    • От Паршенко Виктор
      Доброго времени суток.
      Возникла проблема с использование TLocationSensor в Delphi 10.3 Rio под iOS. 
      Открыл, скомпилировал и установил приложение LocationDemo взятое из примеров.
      Device: iPhone 7+, version ios: 12.1.3. 
      При запуске, приложение запросило разрешение на доступ к геолокации (разумеется разрешил)
      Индикатор локации в верхнем баре показал, что его сейчас используют, но само приложение не реагирует на это никак. В частности событие OnChangeLocation не срабатывает у TLocationSensor. 
      Что делал я, чтоб попытаться устранить эту проблему:
      - скомпилировал этот же проект под Android (пример рабочий, Android отреагировал и показал мне местоположение)
      - внес изменения в системные юниты по рабочему примеру : 
      - открывал любые другие приложения, которые используют геолокацию (успешно находит и показывает мое местоположение)
      У меня закончились идеи, почему не работает TLocationSensor на iOS.
      P.S. не проверял компиляцию на версии делфи по ниже (10.2.3, 10.2 ... ). 
      Для красоты эксперимента, есть тут кто на Rio использовал геолокацию для iOS, у вас работает? 
       
    • От brunnengi
      Здравствуйте.
      Как отключить клавиатуру, что бы она не вылетала при получении фокуса в полях ввода?
    • От Mohamed BEN AMMAR
      hello 
      i'm using delphi fmx for building android App
      i have this code for Activating The WI-FI icon from android device:
      This could be found here .
      =========== code ==================
      uses
        Androidapi.Helpers,
        Androidapi.JNI.JavaTypes,
        Androidapi.JNI.GraphicsContentViewText,
        Androidapi.JNIBridge,
        Androidapi.JNI.WifiManager;
        procedure SetWifiEnabled (AEnable: Boolean); var   Obj: JObject;   WifiManager: JWifiManager; begin   Obj: = SharedActivityContext.getSystemService (TJContext.JavaClass.WIFI_SERVICE);   if Obj = nil then     Exit;     WifiManager: = TJWifiManager.Wrap ((Obj as ILocalObject) .GetObjectID);   WifiManager.setWifiEnabled (AEnable); end; 
       
       My question is About Activating Android location:
        Is it possible to activate the service location icon from android device
       programatically without using the Location or TLocationSensor component ....?
      however I know exactly that google has been Deactivate this API since android "4" just for security reasons .....
      but i have seen many apps in playstore can activate the service without using 
      this code here ask the user for activate the location manually .... procedure TForm1.GPSSettings; {$IFDEF ANDROID} var Intent: JIntent; {$ENDIF} begin {$IFDEF ANDROID} Intent := TJIntent.Create; Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_LOCATION_SOURCE_SETTINGS); TAndroidHelper.Activity.startActivity(Intent); {$ENDIF} end; in other versions like lolipopup can show just the Allow Permission system dialog timer ....( Asking the user for Allowing this App to Activate the service location ......) 
      I have an android device with lolipopup version and i try to execute the location EMBARCADERO sample but 
      this one can not activate the service location ICON even  my device show me the Allow permission dialog where i choose yes allow
      with never ASK....
      Finally ,  I like the WI-FI code above .....
      and i'm wondering if someone here can do this task for me (i need a unit as the WI-FI code above which can offer me
      the option to activate the Service Location ICON )
      I'm ready to paid for that task .....
       
      Sincerelly: Brave.
    • От void
      Добрый день.
      (Delphi 10.3)
      (XCode 10.1)

      Подключил статический framework на версии SDK 11.2 (macMini)
      как описано в:
      ВСЕ ЗАРАБОТАЛО!
       
       

      После обновления:
      1) macMini к
              XCode 10.1
              SDK 12.1
              PAServer 20.0
      2) windows
              PAServer 20.0
      3) PAServer - конектится
      4) прописал дополнительные SDK  (Delphi -> SDK Manager -> Properties)
      5) Получил SDK 12 на windows (Delphi -> Update Local File Cache)
      6) Пути в Linking изменил для SDK12

      При сборке выдает ОШИБКУ:
      [DCC Error] E2597 Undefined symbols for architecture arm64 (для 32 - armv7):...

      [DCC Fatal Error] F2588 Linker error code: 1 ($00000001)

      Кто нибудь сталкивался с такой ошибкой после обновления?
       
    • От GMX
      Android 6 MIUI
       ни стандартные примеры не работают, ни попытки что-то свое создать... 
      LastDiscoveredDevices - всегда 0, хотя из настроек устройства находятся. 
      unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.Bluetooth, System.Bluetooth.Components, FMX.Controls.Presentation, FMX.StdCtrls; type TForm1 = class(TForm) Button1: TButton; Bluetooth1: TBluetooth; Label1: TLabel; AniIndicator1: TAniIndicator; procedure Button1Click(Sender: TObject); procedure Bluetooth1DiscoverableEnd(const Sender: TObject); procedure Bluetooth1DiscoveryEnd(const Sender: TObject; const ADeviceList: TBluetoothDeviceList); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.Bluetooth1DiscoverableEnd(const Sender: TObject); begin Label1.Text := IntToStr(Bluetooth1.LastDiscoveredDevices.Count); end; procedure TForm1.Bluetooth1DiscoveryEnd(const Sender: TObject; const ADeviceList: TBluetoothDeviceList); begin Label1.Text := IntToStr(ADeviceList.Count); AniIndicator1.Enabled :=False; end; procedure TForm1.Button1Click(Sender: TObject); begin Bluetooth1.DiscoverDevices(10000); AniIndicator1.Enabled :=True; end; procedure TForm1.FormCreate(Sender: TObject); begin while not Bluetooth1.Enabled do Bluetooth1.Enabled := True; end; end. В разрешениях bluetooth, bluetooth admin, coarse location, fine location включены... 
    • От Barbanel
      Всем привет!
      Поясните мне плиз, такую вещь как TTouchAnimation, на примере Android.
      Как я это понимаю:
      Есть к примеру некая кнопка, которая имеет несколько состояний, из которых важны: не нажатая и нажатая.
      В момент нажатия, TTouchAnimation пускает расходящийся круг, причем четко из центра нажатия.
      Ок, пусть на самом деле не круг, а картинку, указанную в... собсно, где???
      Как задать эту область, которая должна отображаться как реакция на нажатие?В редакторе среды, у объектов TButtonStyleObject есть свойство TouchAnimation: (TTouchAnimationAdapter), у которого в свою очередь есть свойство Link: (TBitmapLinks), которое как я считал и отвечает за эту область.
      Однако, при клике на это поле ничего не происходит.
      Баг среды, или моя удача???
      Как вы с этим боретесь?
      Других полей, где могли бы быть эти координаты я не нахожу.
      Заранее спасибо!

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...