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

Лидеры

  1. OnePeople

    OnePeople

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


    • Баллы

      14

    • Постов

      193


  2. slav_z

    slav_z

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


    • Баллы

      3

    • Постов

      229


  3. Brovin Yaroslav

    Brovin Yaroslav

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


    • Баллы

      1

    • Постов

      2 124


  4. krapotkin

    krapotkin

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


    • Баллы

      1

    • Постов

      2 011


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

Показан контент с высокой репутацией за 07.11.2021 во всех областях

  1. простейший способ:
    2 балла
  2. onMouseDown := (Self.Parent as TFrame6).imgMouseDown;
    2 балла
  3. Вы можете его даже не создавать TJNetworkCapabilities.JavaClass.TRANSPORT_WIFI
    2 балла
  4. я сам делаю так: анимирую одно свойство, а все остальные (любые которые надо дополнительно) на событие OnProcess у анимации...
    1 балл
  5. Попробуйте библиотеку компонентов FGX, она содержит компонент TFgPositionAnimation, созданный для анимации свойств типа TPosition. Я сам пробовал использовать этот компонент - работал нормально.
    1 балл
  6. Нашел времени немного, у себя сделал так, нахожу все сети, заполняю ими ListView, при нажатии на item вызываю ConnectToWifi(ssid, bsid, password: String) а вы какой хотите велосипед такой и изобретайте 1.JWifiNetworkSpecifier = interface(JObject) оставляем! 2. procedure ConnectToWifi(ssid, bsid, password: String); var ConnectivityManagerNative: JObject; ConnectivityManager: JConnectivityManager; NetworkRequest_Builder: JNetworkRequest_Builder; NetworkRequest: JNetworkRequest; WifiNetworkSpecifier: JWifiNetworkSpecifier; WifiNetworkSpecifier_Builder: JWifiNetworkSpecifier_Builder; WiFicallback: JConnectivityManager_NetworkCallback; begin WifiNetworkSpecifier := TJWifiNetworkSpecifier_Builder.Create .setSsidPattern(TJPatternMatcher.JavaClass.init(StringToJString(ssid), TJPatternMatcher.JavaClass.PATTERN_PREFIX)) .setBssid(TJMacAddress.JavaClass.fromString(StringToJString(bsid))) .setWpa2Passphrase(StringToJString(password)) .build(); NetworkRequest := TJNetworkRequest_Builder.Create .addTransportType(TJNetworkCapabilities.JavaClass.TRANSPORT_WIFI) .removeCapability(TJNetworkCapabilities.JavaClass.NET_CAPABILITY_INTERNET) .setNetworkSpecifier( TJNetworkSpecifier.Wrap((WifiNetworkSpecifier as ILocalObject).GetObjectID)) .build(); WiFicallback := TJConnectivityManager_NetworkCallback.JavaClass.init; ConnectivityManagerNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.CONNECTIVITY_SERVICE); connectivityManager := TJConnectivityManager.Wrap((ConnectivityManagerNative as ILocalObject).GetObjectID); connectivityManager.requestNetwork(NetworkRequest, WiFicallback); end; 3. WiFiCallBack это обратный вызов - это класс Java, поэтому вам нужно создать потомка и реализовать необходимые методы. В настоящее время это невозможно сделать в Delphi (хотя listner'ы отлично реализуются), поэтому вам нужно будет сделать это на Java. В коде Java вы можете объявить интерфейс, который может быть передан классу, как в этом примере: https://github.com/DelphiWorlds/Kastri/blob/master/Features/Connectivity/DW.Connectivity.Android.pas https://github.com/DelphiWorlds/Kastri/tree/master/Java/Base/Connectivity
    1 балл
  7. эмм крайне странная логика, не ? обработчик должен присваивать тот кто создает, а не тот, кого создают и уж 99.9% компонент не должен знать ничего о классе, куда его будут вставлять procedure TFrame6.SomeProc(); var img: TMyImage; begin img := TMyImage.Create(Self); img.parent := layout5; img.OnMouseDown := OnMouseDown; images.add(img); end;
    1 балл
  8. Да для простых приложений это самое быстрое решение, я вам так скажу сейчас уже мало осталось того что не написать на делфи для андроид, дело в том что люди не хотят искать и писать, им нужно чтобы раз и все получилось...
    1 балл
  9. а в Яве он разворачивается в целую процедуру, какую процедуру!? Callback это ответный метод, вы так сказать подсоединяетесь к нему Callback.onAvailable := NetworkonAvailable; и каждый раз когда платформа подключается и объявляет новую сеть готовой к использованию(onAvailable) будет вызываться процедура, которую вам необходимо объявить и описать дальнейшие действия procedure NetworkonAvailable(network: JNetwork); begin // end;
    1 балл
  10. у canvas есть свой способ отрисовки текста, его пробовали? да, она так же вызовет textlayout но все же.
    1 балл
  11. перегрузок может быть столько сколько у гугла в api, а там их две
    1 балл
  12. Так её и не может быть, попробуйте в Androidapi.JNI.net.wifi заменить JWifiNetworkSpecifier = interface(JObject) на JWifiNetworkSpecifier = interface(JNetworkSpecifier)
    1 балл
  13. И не забудьте добавить проверку на версию API, так как тот API только для android 10.
    1 балл
  14. А нет, могу помочь сейчас, как вы ищите не понимаю https://github.com/AndrewEfimov/Wrappers/blob/master/Androidapi.JNI.net.wifi.pas
    1 балл
  15. Здесь все зависит от того, как сделано в android. Следовательно вам всегда в первую очередь нужно смотреть справку developer.android.com. Все что ниже это то как делаю я, не истина, так как мне для хобби достаточно. На примере 1. JConnectivityManager. Захожу в справку, ищу JConnectivityManager, открываю пример работы с API. Вижу код: ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); Начинаю переписывать на Delphi (паскале, не считаю) и вижу что getSystemService возвращает JObject. Если мы получаем не определенный объект то нам нужно сопоставить его с определенным классом, так сказать объект обернуть в класс НАШКЛАСС.ОБЕРНУТЬ(ИД_ОБЪЕКТА) TJConnectivityManager.Wrap((ConnectivityServiceNative as ILocalObject).GetObjectID); Если же объект создается методом new, тогда мы можем просто использовать init, create. (В чем разница я не знаю AudioFocusRequest:=TJAudioFocusRequest_Builder.JavaClass.init(TJAudioManager.JavaClass.AUDIOFOCUS_GAIN); AudioFocusRequest:=TJAudioFocusRequest_Builder(TJAudioManager.JavaClass.AUDIOFOCUS_GAIN).Create; Я пользуюсь обоими видами конструкцию, но предпочитаю init ) 2.Захожу в справку, ищу JWifiNetworkSpecifier, вижу Apps should use the WifiNetworkSpecifier.Builder class to create an instance. Соответственно Network specifier object создается строителем, перехожу дальше в WifiNetworkSpecifier.Builder, смотрю там и так далее. Есть всякие костыли и идеи людей решающие многие проблемы, но я вам так скажу у вас не будет проблем если вы будете делать так как вам советует гугл, а если и будут, то на китайских устройствах где по какой то причине китайцы просто что то сломали в системе и заменили это своим хламом не отвечающим требованиям гугл(Обычно телефон и BT). Единственная помарка, в Delphi бывает отсутствует все API, и некоторые вещи, вообще не реализованы, но их очень мало и они очень специфические. .
    1 балл
  16. WifiNetworkSpecifier.Builder builder = new WifiNetworkSpecifier.Builder(); builder.setSsid("wifi-ap-ssid"); builder.setWpa2Passphrase("wifi-ap-password"); Вот это добавлено только для API 29 и выше NetworkSpecifierObj:= TAndroidHelper.Context.getSystemService(TJContext.JavaClass.CONNECTIVITY_SERVICE); NetworkSpecifier:= TJNetworkSpecifier.Wrap((NetworkSpecifierObj as ILocalObject).GetObjectID); Чушь полная, вы запрашиваете сервис соединений ConnectivityManager, а NetworkSpecifier это абстрактный класс он не создается вообще его получают от другого API. WifiNetworkSpecifier и NetworkSpecifier это разные вещи, вам нужен именно WifiNetworkSpecifier. var ConnectivityManagerNative: JObject; ConnectivityManager: JConnectivityManager; NetworkRequest_Builder: JNetworkRequest_Builder; NetworkRequest: JNetworkRequest; WifiNetworkSpecifier: JWifiNetworkSpecifier; WifiNetworkSpecifier_Builder: JWifiNetworkSpecifier_Builder; begin WifiNetworkSpecifie_Builder:= TJWifiNetworkSpecifier.JavaClass.init; WifiNetworkSpecifie_Builder.setSsid("wifi-ap-ssid"); WifiNetworkSpecifie_Builder.setWpa2Passphrase("wifi-ap-password"); WifiNetworkSpecifier := WifiNetworkSpecifie_Builder.build; NetworkRequest_Builder := TJNetworkRequest_Builder.JavaClass.init; NetworkRequest_Builder.addTransportType(TJNetworkCapabilities.JavaClass.TRANSPORT_WIFI); NetworkRequest_Builder.setNetworkSpecifier(wifiNetworkSpecifier); NetworkRequest := NetworkRequest_Builder.build; ConnectivityManagerNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.CONNECTIVITY_SERVICE); connectivityManager := TJConnectivityManager.Wrap((ConnectivityManagerNative as ILocalObject).GetObjectID); connectivityManager.requestNetwork(NetworkRequest, callback);
    1 балл
  17. Alisson R Oliveira

    Прозрачный TListView

    https://github.com/Spelt/ModernListView
    1 балл
  18. OnePeople

    [Android]Входящий звонок

    if (focusChange=TJaudioManager.JavaClass.AUDIOFOCUS_LOSS) or (focusChange=TJaudioManager.JavaClass.AUDIOFOCUS_LOSS_TRANSIENT)
    1 балл
  19. Часть исходного TBitmap вырезается при помощи отрисовки этой части в другой TBitmap. Допустим есть такой проект: Тогда алгоритм по вырезанию будет следующий: Определяем регион вырезаемой области: var BitmapSource: TBitmap; BitmapDest: TBitmap; DestWidth: Integer; DestHeight: Integer; BitmapSourceRect: TRectF; BitmapDestRect: TRectF; begin BitmapSource := ImageSrc.Bitmap; BitmapSourceRect := TRectF.Create(TPointF.Create(nbX.Value, nbY.Value), nbWidth.Value, nbHeight.Value); Создаем TBitmap для вырезанной части: DestWidth := Max(0, Round(nbWidth.Value)); DestHeight := Max(0, Round(nbHeight.Value)); BitmapDest := TBitmap.Create(DestWidth, DestHeight); BitmapDestRect := TRectF.Create(0, 0, BitmapDest.Width, BitmapDest.Height); Выполняем отрисовку области исходного битмапа в конечный: if BitmapDest.Canvas.BeginScene then try BitmapDest.Canvas.DrawBitmap(BitmapSource, BitmapSourceRect, BitmapDestRect, 1); finally BitmapDest.Canvas.EndScene; end; Выводим полученное изображение на форму: ImageDest.Bitmap.Assign(BitmapDest); Результат:
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...