Перейти к содержанию

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

1 минуту назад, Abdi Pranoto сказал:

very nice,
but how to change the navbar color to default?

put into Content new TRectangle with align := MostBottom and color := claBlack

OnResize: Content.Margins.Bottom := 0;

 

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


Ссылка на сообщение
31 минуту назад, ZuBy сказал:

put into Content new TRectangle with align := MostBottom and color := claBlack

OnResize: Content.Margins.Bottom := 0;

 

i had analyzed your code,
and its use Android API as well....
you're good....

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


Ссылка на сообщение

ZuBy,

у меня почему-то цвет статус-бара темнее, чем цвет фона кнопок.

А еще возникает вопрос, как изменить цвет иконок статус-бара, потому что на белом фоне белые иконки не очень хорошо смотрятся?

 

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


Ссылка на сообщение
7 часов назад, Pax Beach сказал:

у меня почему-то цвет статус-бара темнее, чем цвет фона кнопок.

нам из делфи доступно сделать только полупрозрачный цвет

7 часов назад, Pax Beach сказал:

А еще возникает вопрос, как изменить цвет иконок статус-бара, потому что на белом фоне белые иконки не очень хорошо смотрятся?

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

Пока лучшего результата не смог достичь

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


Ссылка на сообщение
4 часа назад, ZuBy сказал:

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

А нативно в Android не смотрел, можно менять цвет значков?

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


Ссылка на сообщение
if not TJKeyCharacterMap.JavaClass.deviceHasKey(TJKeyEvent.JavaClass.KEYCODE_BACK) then

Хотелось бы уточнить по данной проверке, ведь она не на всех смартфонах срабатывает. Да и вообще нет надежного способа проверить есть ли navigationbar.

На Android 5.1 (без navigationbar), c аппаратными кнопками, условие if not работает, бар не показывается, потому что его нет, но на Android 6.0 (с navigationbar), без аппаратный кнопок, это условие уже не работает, navigationbar не заливается, хотя он есть в системе.

5.1.jpg 6.0.jpg

Если изменить проверку на if (без not), на Android 6.0 navigationbar заливается, однако, navigationbar становится виден и на Android 5.1 (если обновить форму), хотя в системе он не поддерживается (естественно, потому что проверка не верна). 

 5.1.jpg 6.0.jpg

Можно попробовать проверять значение config_showNavigationBar, что-то вроде этого:

resourceID:=TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('config_showNavigationBar'),  StringToJString('bool'), StringToJString('android'));

Строка возвращает следующий набор значений:

Значение: "17956965" если navigationbar есть, "17956955", если его нет. Как можно сконвертировать в привычные 0 или 1?

Отредактировал Satellite

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


Ссылка на сообщение

что за девайс?

корректно (ведет себя так как ожидается) на девайсах:

  • 6.0 - Nexus 5, HTC M8, Samsung S5
  • 5.0 - Nexus 7
  • 5.0.1 - Nexus 9, LG Leon
  • 5.1.1 - Samsung J7

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


Ссылка на сообщение
10 минут назад, ZuBy сказал:

что за девайс?

Sony Xperia XA (Android 6.0), на нём и проблемки.

Всё прекрасно работает с проверкой значения config_showNavigationBar, правда на Android 5.1 проблема с обновлением (только после смены ориентации экрана - закрашивается статус-бар).

Отредактировал Satellite

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


Ссылка на сообщение
16 минут назад, Satellite сказал:

Sony Xperia XA (Android 6.0), на нём и проблемки.

Всё прекрасно работает с проверкой значения config_showNavigationBar, правда на Android 5.1 проблема с обновлением (только после смены ориентации экрана - закрашивается статус-бар).

да проверил на своём Nexus'e - работает

 resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('config_showNavigationBar'), StringToJString('bool'), StringToJString('android'));
    if (resourceID > 0) and (TAndroidHelper.Activity.getResources.getBoolean(resourceID)) then
    begin
      resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'),
        StringToJString('dimen'), StringToJString('android'));
      if resourceID > 0 then
        NavigationBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale);
    end;

 

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


Ссылка на сообщение
26 минут назад, Satellite сказал:

правда на Android 5.1 проблема с обновлением

мне кажется я знаю в чем проблема, но пока решения не нашел.

есть два пути установки флагов

Window.addFlags и Window.setFlags 

и они по разному работают, проверьте на андроид 5.1 вариант с Window.addFlags

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


Ссылка на сообщение
21 минуту назад, ZuBy сказал:

проверьте на андроид 5.1 вариант с Window.addFlags

Проверил чисто с Window.addFlags, проблема на месте. Также пробовал и с Window.addFlags, и с Window.setFlags вместе.

З.Ы.: Также меня интересует, какое значение возвращается с getIdentifier (resourceID) на nexus? По идеи должно вернуть 17956965. Просто на Android 5.1, getBoolean(resourceID) возвращает true. :huh:

Отредактировал Satellite

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


Ссылка на сообщение

 

12 минуты назад, Satellite сказал:

Также меня интересует, какое значение возвращается с getIdentifier (resourceID) на nexus?

17956962

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


Ссылка на сообщение
6 минут назад, Satellite сказал:

ZuBy, тогда я в смятении, что за ерунда творится. 

есть еще один вариант (но не нашел его в интерфейсах, не объявлен)

for api 14 and up

boolean PermanentMenuKey = ViewConfiguration.get(this).hasPermanentMenuKey(); // true if physical, false if virtual

for lower api:

boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
boolean hasHomeKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME);

if (hasBackKey && hasHomeKey) {
    // no navigation bar, unless it is enabled in the settings
} else {
    // 99% sure there's a navigation bar
}

источник

 

укороченный вариант

описание 

Цитата

Took me some time but I've found a more reliable way than relying on hasPermanentMenuKey()which doesn't work for newer phones like the HTC One which have no menu key but do have home & back keys so don't need (or show) the soft navigation bar. To get around this try the following code which checks for a back button too:

boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey();
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);

if(!hasMenuKey && !hasBackKey) {
    // Do whatever you need to do, this device has a navigation bar
}

источник

Отредактировал ZuBy

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


Ссылка на сообщение
2 минуты назад, ZuBy сказал:

есть еще один вариант (но не нашел его в интерфейсах, не объявлен)

Встречал одно независимое решение: Ищем разницу между realSize.y и screenSize.y, сравниваем разницу с высотой navigationbar'a. Если (difference == navBarHeight), то navigationbar в системе есть.

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public boolean hasNavBar(Context context) {
    Point realSize = new Point();
    Point screenSize = new Point();
    boolean hasNavBar = false;
    DisplayMetrics metrics = new DisplayMetrics();
    this.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
    realSize.x = metrics.widthPixels;
    realSize.y = metrics.heightPixels;
    getWindowManager().getDefaultDisplay().getSize(screenSize);
    if (realSize.y != screenSize.y) {
        int difference = realSize.y - screenSize.y;
        int navBarHeight = 0;
        Resources resources = context.getResources();
        int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
        if (resourceId > 0) {
            navBarHeight = resources.getDimensionPixelSize(resourceId);
        }
        if (navBarHeight != 0) {
            if (difference == navBarHeight) {
                hasNavBar = true;
            }
        }

    }
    return hasNavBar;

}

Источник

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


Ссылка на сообщение

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

To determine the presence of a hardware keys, this method is the easiest:

.
.
uses
  Androidapi.KeyCodes,
  Androidapi.JNI.GraphicsContentViewText,
.
.
  TJKeyCharacterMap.JavaClass.deviceHasKey(AKEYCODE_BACK) //To detect hardware BACK
  TJKeyCharacterMap.JavaClass.deviceHasKey(AKEYCODE_MENU) //To detect hardware MENU
.
.

Result for deviceHasKey is Boolean.

All keycode constants can be found in unit Androidapi.KeyCodes.

Источник

З.Ы. Остаётся лишь написать проверку и тестить. 

Отредактировал Satellite

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


Ссылка на сообщение
1 минуту назад, Satellite сказал:

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

я хотел вытащить вот это значение 

boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey();

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


Ссылка на сообщение
if (TJKeyCharacterMap.JavaClass.deviceHasKey(AKEYCODE_BACK)) and (TJKeyCharacterMap.JavaClass.deviceHasKey(AKEYCODE_MENU)) then

Всё равно значение true передаётся, но navigationbar'a помине нет в системе. :huh:

Отредактировал Satellite

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


Ссылка на сообщение
function hasNavbar: Boolean;
// uses Androidapi.JNI.Util,
{$IFDEF ANDROID}
var
  Window: JWindowExt;
  realSize: JPoint;
  screenSize: JPoint;
  metrics: JDisplayMetrics;
  difference, navBarHeight, resourceID: Integer;
{$ENDIF}
begin
  Result := false;
{$IFDEF ANDROID}
  metrics := TJDisplayMetrics.Create;
  realSize := TJPoint.Create;
  screenSize := TJPoint.Create;

  Window := GetWindowExt;
  Window.getWindowManager.getDefaultDisplay.getRealMetrics(metrics);
  realSize.x := metrics.widthPixels;
  realSize.y := metrics.heightPixels;

  Window.getWindowManager.getDefaultDisplay.getSize(screenSize);
  if realSize.x <> screenSize.y then
  begin
    difference := realSize.y - screenSize.y;
    resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'),
      StringToJString('dimen'), StringToJString('android'));
    if resourceID > 0 then
      navBarHeight := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID));

    if navBarHeight > 0 then
      Result := difference = navBarHeight;
  end;
{$ENDIF}
end;

вот проверьте

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


Ссылка на сообщение
8 минут назад, ZuBy сказал:

вот проверьте

Действительно работает, думаю, лучше использовать эту функцию. ;)

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


Ссылка на сообщение
Только что, Satellite сказал:

Действительно работает, думаю, лучше использовать эту функцию. ;)

в обоих случаях?

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


Ссылка на сообщение
2 минуты назад, ZuBy сказал:

в обоих случаях?

Да, в обоих случаях B) Осталась проблема только с обновлением на Android 5.1.

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


Ссылка на сообщение

Исправление проблемы с обновлением бара на Android 5.1:

В настройках проекта выбираем No TitleBar:

Project -> Options -> Version Info -> Theme: No TitleBar.

Код события Onresize необходимо переместить в конец Onshow, т.к. в Onresize перестанет возвращаться высота бара. D:

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

Отредактировал Satellite

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


Ссылка на сообщение

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

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

Гость
Ответить в этой теме...

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

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

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

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

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


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

    • От slav_z
      Все разработчики при работе с FMX рано или поздно сталкиваются с одной и той же проблемой: необходимо исключить "случайное" срабатывание нажатий элементов внутри скроллбокса во время его скроллинга. Идут годы, а решения так и нет. Давайте попробуем это исправить. Поехали!
      Запускаем IDE, создаем новый проект, кидаем на форму TVertScrollBox и на него чего-нибудь побольше... запускаем на мобильном устройстве, пытаемся скроллировать,

      получаем проблемы в виде срабатывания разных событий типа OnClick элементов.
      Решение состоит в том, чтобы сделать элементы "невидимыми" для событий связанных с действиями пользователя с экраном во время скроллинга.
      Делаем следующее:

      Все. Переносим код в базовую форму, делаем его более гибким, убираем все те костыли, которые мы уже успели сделать ранее...
      Удачи!
      https://github.com/slav-libx/scroll-click.git
    • От uakmal
      Здравствуйте!
      Создаю медиаплеер для Android TV. 
      Запускаю плеер, нажимаю на условную кнопку, которая делает следующее: 
      MediaPlayer1.FileName:='/storage/emulated/0/download/1.mp4'; После нажатия вылетает окошко с надписью:
      java.lang.java.lang.illegalargumentexception после закрытия окошки нажимаю на play, но ничего не происходит.
      Подскажите, пожалуйста как исправить это?
    • От Delpher-X
      Итак, я пробовал использовать компоненты AppTethering для передачи данных между VCL-приложением работающим под Windows и мобильным FMX-приложением и потерпел неудачу, так как выяснилось что потоки данных данные компоненты на деле не передают. И у меня возник вопрос: а нет ли каких других компонентов в современной Embarcadero Studio, которые бы позволяли передавать как строковые данные, так и файлы между приложениями? Особенно меня интересуют все же файлы. 
    • От Delpher-X
      Доброе время суток. У меня есть код, который отправляет данные, в частности файлы, из одного приложения в другое, используя технологию AppTethering. Вот код, который отправляет данные: 
      var ImageToStream : TMemoryStream; begin ImageToStream := TMemoryStream.Create; ImageToStream.LoadFromFile('Здесь находится путь к файлу'); ImageToStream.Position := 0; TetheringAppProfile1.Resources.FindByName('ImageTransfer').Value := ImageToStream; ImageToStream.Free; end; А вот который принимает: 
      procedure TForm1.TetheringAppProfile1Resources3ResourceReceived( const Sender: TObject; const AResource: TRemoteResource); var GetImage : TMemoryStream; begin GetImage := TMemoryStream.Create; GetImage.Position := 0; GetImage.LoadFromStream(AResource.Value.AsStream); ImageViewer1.Bitmap.LoadFromStream(GetImage); GetImage.Free; end; Пока передача данных идет между двумя Windows-приложениями, все работает прекрасно. Однако, когда я пытаюсь отправить данные от Windows-приложения в Android-приложение, которое исполняется на смартфоне, подключенном к компьютеру через USB-шнур, данные не проходят.  
    • От Delpher-X
      Здравствуйте. У меня такая проблема. 
      Пытаюсь скачать файл:
       
      var S : TMemoryStream; begin S := TMemoryStream.Create(); IdHTTP1.Get('http://sitename.com/7UlmBU7IXHA.jpg', S); S.SaveToFile('/storage/emulated/0/ImageFile.jpg'); S.Free; end;
      Проблема возникает на последней стадии - при сохранении файла. Android пишет, Cannot create file: '/storage/emulated/0/ImageFile.jpg'. Permission denied, то есть доступ запрещен. Но как его разрешить? Когда я устанавливаю приложение, система пишет, что никаких разрешений данная программа не требует.
    • От Delpher-X
      Здравствуйте. Как указываются пути к каталогам и файлам в Android? Скажем, в Windows я указываю такой путь:  C:/Windows/Folder, а как это делается в Android? Особенно меня интересует, как обратиться к корневому каталогу, для создания там новой папки или файла, в Windows это C:/, или D:/ а тут как? 
    • От destroyer86
      Всем привет, с помощью Java2Op сделал обертку библиотеки получил модуль с интерфейсами.
      Теперь сам вопрос в JavaInterfaces.pas есть описание:
       
      JUsbManagerClass = interface(JObjectClass) ['{1048A6E9-E1B5-4DA5-A168-ED91E8DE5284}'] {class} function _GetACTION_USB_ACCESSORY_ATTACHED: JString; cdecl; {class} function _GetACTION_USB_ACCESSORY_DETACHED: JString; cdecl; {class} function _GetACTION_USB_DEVICE_ATTACHED: JString; cdecl; {class} function _GetACTION_USB_DEVICE_DETACHED: JString; cdecl; {class} function _GetEXTRA_ACCESSORY: JString; cdecl; {class} function _GetEXTRA_DEVICE: JString; cdecl; {class} function _GetEXTRA_PERMISSION_GRANTED: JString; cdecl; {class} function getAccessoryList: TJavaObjectArray<JUsbAccessory>; cdecl;//Deprecated {class} function openAccessory(accessory: JUsbAccessory): JParcelFileDescriptor; cdecl;//Deprecated {class} function openDevice(device: JUsbDevice): JUsbDeviceConnection; cdecl;//Deprecated {class} procedure requestPermission(device: JUsbDevice; pi: JPendingIntent); cdecl; overload;//Deprecated {class} property ACTION_USB_ACCESSORY_ATTACHED: JString read _GetACTION_USB_ACCESSORY_ATTACHED; {class} property ACTION_USB_ACCESSORY_DETACHED: JString read _GetACTION_USB_ACCESSORY_DETACHED; {class} property ACTION_USB_DEVICE_ATTACHED: JString read _GetACTION_USB_DEVICE_ATTACHED; {class} property ACTION_USB_DEVICE_DETACHED: JString read _GetACTION_USB_DEVICE_DETACHED; {class} property EXTRA_ACCESSORY: JString read _GetEXTRA_ACCESSORY; {class} property EXTRA_DEVICE: JString read _GetEXTRA_DEVICE; {class} property EXTRA_PERMISSION_GRANTED: JString read _GetEXTRA_PERMISSION_GRANTED; end; [JavaSignature('android/hardware/usb/UsbManager')] JUsbManager = interface(JObject) ['{6F603A25-E816-4012-9B23-054B428A4A75}'] function getDeviceList: JHashMap; cdecl;//Deprecated function hasPermission(device: JUsbDevice): Boolean; cdecl; overload;//Deprecated function hasPermission(accessory: JUsbAccessory): Boolean; cdecl; overload;//Deprecated procedure requestPermission(accessory: JUsbAccessory; pi: JPendingIntent); cdecl; overload;//Deprecated end; TJUsbManager = class(TJavaGenericImport<JUsbManagerClass, JUsbManager>) end; Что бы получить доступ к методам интерфейса используется следующая конструкция:
      JavaObject := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.USB_SERVICE); FUsbManager := TJUsbManager.Wrap((JavaObject as ILocalObject).GetObjectID); теперь я могу получить доступ к методам JUsbManager, а как получить доступ к методам JUsbManagerClass
      Вот пример кода на Java, который хочу реализовать в Delphi:
      UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE); List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager); if (availableDrivers.isEmpty()) { return; } // Open a connection to the first available driver. UsbSerialDriver driver = availableDrivers.get(0); //Вот тут мы видим что из экземпляра класса мы вызываем openDriver, как это сделать в Delphi UsbDeviceConnection connection = manager.openDevice(driver.getDevice()); Как мы можем заметить этого метода в описании интерфейса нет, но есть в классе, как получить доступ к экземпляру класса?
    • От Yarpda
      Доброго дня уважаемые форумчане!
      Есть одна задача, но я не совсем уверен, что так можно, прошу совета.
      В общем есть приложение, в ней база данных SqlLite (файл базы данных деплоится в assets\internal\). Пользователь наполняет эту базу данных своими данными.
      Необходимо сделать возможность экспортирования этих данных на внешний носитель и последующего импортирования уже на другом устройстве.
      Вопрос, даст ли система экспортировать свой файл из assets\internal и главное импортировать его (т.е. фактически заменить существующий файл  базы данных) в папке assets\internal на другом устройстве? (предполагается что root прав у пользователя нет).
      Если да, то можно вкратце объяснить порядок действий (желательно с указанием запрашиваемых и статичных разрешений на это дело, путей обращения к файлам).
      Если нет, то каким образом тогда это можно сделать (формировать промежуточный файл с данными БД, а потом его обрабатывать на другом устройстве средствами СУБД)?
      P.S. Такая задача встала впервые, не очень разбираюсь в теме безопасности на Андроид устройствах и работе с файлами приложения напрямую, поэтому прошу помощи, может быть кто-то уже сталкивался с подобной задачей.
      Заранее спасибо! )
    • От zekelive
      Коллеги, здравствуйте. Помогите пожалуйста с работой потоков. При запуске потока, появляется индикатор и исправно крутится. В какой то момент он залипает и перестает крутиться и так до конца работы потока. Понимаю, что в потоке идет работа с визуальными компонентами, по этому скорее всего и залипает индикатор. Как исправить/оптимизировать код? Спасибо.
      DelOff = class (TThread) protected FOnTaskStarted: TThreadMethod; FOnTaskFinished: TThreadMethod; procedure DoStarted; procedure DoFinished; procedure load; procedure Execute; override; public property OnTaskStarted: TThreadMethod read FOnTaskStarted write FOnTaskStarted; property OnTaskFinished: TThreadMethod read FOnTaskFinished write FOnTaskFinished; end; procedure DelOff.DoFinished; begin Add.Layout1.Visible:=false; if Assigned (Add.FindComponent('Null') as TLayout) then (Add.FindComponent('Null') as TLayout).Free; end; procedure DelOff.DoStarted; begin Add.Layout1.Visible:=true; end; procedure DelOff.load; begin try ReOpen; ClientModule2.ServerMethods1Client.Number13(a,b,g,h); a:='1'; ReOpen; offerlist1.Lines.Text:=ClientModule2.ServerMethods1Client.Number12(a,b,g,h); a:='2'; ReOpen; sumofferlist1.Lines.Text:=ClientModule2.ServerMethods1Client.Number12(a,b,g,h); a:='3'; ReOpen; keyofferlist1.Lines.Text:=ClientModule2.ServerMethods1Client.Number12(a,b,g,h); ReOpen; offercount:=ClientModule2.ServerMethods1Client.Number11(a,b,g,h); except ANM.Show; Add.Visible:=false; ShowmessageToast('Ошибка загрузки',TJToast.JavaClass.LENGTH_LONG); Value := Trim('10,500'); if Add.CheckPermission then if Value.Contains(',') then TVibratorHelper.vibrate(Value.Split([',']), -1) else TVibratorHelper.vibrate(Value.ToInt64); end; end; procedure DelOff.Execute; begin inherited; //Удаление из БД продукта try try Synchronize(DoStarted); updatecount:=StringReplace((Add.FindComponent('LabelIntro') as TLabel).Hint, 'Rec', '', [rfReplaceAll]); a:=(Add.FindComponent('NameProduct'+updatecount) as TLabel).Hint; di:= TZDeviceInfo.Create; b:=StringReplace(di.DeviceID, '=', '', [rfReplaceAll]); if(internet='true') and (server='true') then begin EditCase:='false'; Add.PSB.AutoCalculateContentSize:=false; Add.PSB.EnabledScroll:=true; Add.PSB.AutoCalculateContentSize:=true; synchronize(load); if Assigned (Add.FindComponent((Add.FindComponent('LabelDel') as TLabel).Hint)) then begin (Add.FindComponent((Add.FindComponent('LabelDel') as TLabel).Hint) as TRectangle).Free; (Add.FindComponent('RecEdit') as TRectangle).Free; end; Add.PSB.ScrollTo(0,0,true); for countload:=0 to StrToInt(offercount)-1 do begin (Add.FindComponent('XRun'+IntToStr(countload)) as TFloatAnimation).Enabled:=false; (Add.FindComponent('x'+IntToStr(countload)) as TImage).Opacity:=0; (Add.FindComponent('VRun'+IntToStr(countload)) as TFloatAnimation).Enabled:=false; (Add.FindComponent('v'+IntToStr(countload)) as TImage).Opacity:=0; end; end else begin ShowmessageToast('Нет интернета',TJToast.JavaClass.LENGTH_LONG); Value := Trim('10,500'); if Add.CheckPermission then if Value.Contains(',') then TVibratorHelper.vibrate(Value.Split([',']), -1) else TVibratorHelper.vibrate(Value.ToInt64); end; finally Synchronize(DoFinished); end; except ANM.Show; Add.Visible:=false; ShowmessageToast('Ошибка загрузки',TJToast.JavaClass.LENGTH_LONG); Value := Trim('10,500'); if Add.CheckPermission then if Value.Contains(',') then TVibratorHelper.vibrate(Value.Split([',']), -1) else TVibratorHelper.vibrate(Value.ToInt64); end; end;  
  • Последние посетители   0 пользователей онлайн

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

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