• 0
Авторизация  
Alex Bakulin

vkHardwareBack и все-все-все

Вопросы

Создаю стандартное мобильное приложение, которое предлагает Delphi Berlin. Там есть обработчик кнопки Назад. Собственно у меня задача, после того, как человек перешел в какой-то из режимов приложения, на эту кнопку реагировать, а именно присваивать Key := 0 и делать Application.Terminate. Но это не срабатывает, пролистываются все экраны приложения до первого и только после этого идет выход...

Возможно я что-то не так для Андроид использую. Как мне закрыть приложение по этой кнопке? 

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


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

4 ответа на этот вопрос

  • 0

Я так понимаю, что "экраны" - это отдельные формы? А нажатие клавиши обрабатываете в главной форме? Если так, то, как вариант, вместо форм использовать фреймы. И тогда все заработает почти без изменений в коде

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
20 часов назад, sinuke сказал:

Я так понимаю, что "экраны" - это отдельные формы? А нажатие клавиши обрабатываете в главной форме? Если так, то, как вариант, вместо форм использовать фреймы. И тогда все заработает почти без изменений в коде

Нет, это TTabControl, соответственно переключения идут между вкладками.

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


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

На главной форме обработать FormKeyUp. 

В начале Key:=0; а потом, что угодно.

 

procedure MyForm.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  if (Key =vkHardWareBack) then
  begin
  Key:=0;
   SharedActivity.moveTaskToBack(True);
  end;

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

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 17.04.2017 в 18:05, Dogos сказал:

procedure MyForm.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  if (Key =vkHardWareBack) then
  begin
  Key:=0;
   SharedActivity.moveTaskToBack(True);
  end;

В том и дело, что не работает...

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

Авторизация  

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

    • От serg557
      День добрый!
      Ситуация такова:
      1. Загружаю вебстраничку в AnsiString - тут все отлично работает как на винде так и под андроид;
      2. Пытаюсь ее отпарсить с использованием стандартных методов AnsiString- .Pos(), .SubString(), .Delete(), - на винде все работает - на андроиде -нет.
       Вопрос в следующем - чем работать на с текстом - чтобы одинаково работало под андроидом?
       
    • От DirtyBorov
      За ранее прошу простить если не в ту ветку. Вопрос двоякий и анимация и жесты.
      Нужно реализовать анимацию, таким образом, что бы она постепенно останавливалась. Вот например есть 10 картинок, надо их пальцем прокручивать. Но так, чтоб они постепенно останавливались. Причем картинки небольшие, сразу на экране могут быть 3 картинки.  Как бы лента из картинок. Картинок может быть много 100+. Стоит ли копать в сторону анимации? Не будет ли тормозить на слабеньком телефоне?
      Посоветуйте куда копать - анимация, Box2D?
    • От Рагим
      Добрый день. Пишу приложение на Delphi XE7 под Андроид. Код типа 
       
      if Key = vkHardwareBack then
      begin
      // Do whatever you want to do here
      Key := 0; // Set Key = 0 if you want to prevent the default action
      end;
       
      отлично работал в XE6 и перестал работать после обновления. Приложение выполняет все что находится до строки Key:=0, а потом закрывается. Причем не закрывает подключения TIdTCPServer? в результате чего не выгружается полностью. Вышеуказанный код надо использовать как при выходе из приложения, так и при переходе из формы в форму. В чем по вашему мнению может быть проблема?
    • От Igor
      По умолчанию приложение написанное в Delphi XE6 Update 1 под Android устанавливается во внутреннюю память устройства, и насколько я понял не подлежит переносу.
       
      Можно ли установить приложение на SD карту или разблокировать возможность переноса на SD?
       
      Для установки на SD ориентировочно смотрю в сторону Project -> Version info (Android) -> package
      но там даже когда стандартный com.embarcadero.$(ModuleName) меняешь на $(ModuleName) уже что-то не так.
       
      Предполагаю, что может быть можно вписать что-то типо "/storage/sdcard0/com.embarcadero.$(ModuleName)", но точно не знаю, + ко всему вроде не везде на SD такой путь, и не везде есть вообще SD. Лучший вариант проверять есть ли SD и ставить на него, если есть, иначе во внутреннюю память или предоставлять выбор. Но как?
       
      Подскажите? Честно скажу, методом тыка не пробовал.
    • От SerhioUser
      Здравствуйте!
       
      Вопрос по Андроиду.
      Как из одного приложения (A) запустить инсталляцию apk другого приложения (Б) (желательно полностью в авто режиме), а потом из приложения (A) запустить приложение (Б)?
      Объясняю зачем: делается корпоративная программа, (работающая на нескольких планшетах), которая часто обновляется, и нужно написать агент, который должен в авто-режиме принимать apk по сети и обновлять приложение (Б).
      Пишу на C++ Builder XE6, Андроид 7.
       
      Спасибо.
    • От la_coste
      Доброго времени суток, в процессе изучения Delphi XE5 возник такой вопрос:
      Возможно ли открыть к примеру HTML страницу из файловой системы устройства в браузере по умолчанию??
      Заранее спасибо)
    • От Brovin Yaroslav
      Как в настройках среды RAD Studio XE5 указать, что проект нужно собирать с использованием другой версии Android OS?
  • Последние посетители   0 пользователей онлайн

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