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

[Android] Системные кнопки в браузере


alewka006

Вопрос

Добрый день.

На форме разместил TWebBrowser (Android). Не реагирует на нажатие системной кнопки Назад. Подскажите, пожалуйста, как поймать и обработать нажатие системных кнопок в браузере.

Изменено пользователем alewka006
Ссылка на комментарий

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

  • 0

Лови их на форме OnKeyup и выполняй нужные действия. 

 

Пример:

procedure TMainForm.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
var
  FService: IFMXVirtualKeyboardService;
begin
  if Key = vkHardwareBack then
  begin
    TPlatformServices.Current.SupportsPlatformService
      (IFMXVirtualKeyboardService, IInterface(FService));
    if (FService <> nil) and (TVirtualKeyboardState.Visible
      in FService.VirtualKeyBoardState) then
    begin
      // Back button pressed, keyboard visible, so do nothing...
    end
    else отрабатываем дальше

Ссылка на комментарий
  • 0

 

Лови их на форме OnKeyup и выполняй нужные действия. 

 

Пример:

procedure TMainForm.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
var
  FService: IFMXVirtualKeyboardService;
begin
  if Key = vkHardwareBack then
  begin
    TPlatformServices.Current.SupportsPlatformService
      (IFMXVirtualKeyboardService, IInterface(FService));
    if (FService <> nil) and (TVirtualKeyboardState.Visible
      in FService.VirtualKeyBoardState) then
    begin
      // Back button pressed, keyboard visible, so do nothing...
    end
    else отрабатываем дальше

Не работает

Ссылка на комментарий
  • 0
unit more;
 
interface
 
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Layouts, FMX.Objects, FMX.WebBrowser, FMX.Platform, FMX.VirtualKeyboard;
 
type
  TForm5 = class(TForm)
    Logo: TImage;
    Layout1: TLayout;
    WebBrowser1: TWebBrowser;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form5: TForm5;
 
implementation
 
{$R *.fmx}
 
uses main;
 
procedure TForm5.FormCreate(Sender: TObject);
begin
logo.Width:=Form5.ClientWidth;
logo.Height:=Form5.ClientWidth/2.8;
WebBrowser1.Width:=Form5.ClientWidth-30;
WebBrowser1.Height:=Form5.ClientHeight-30;
end;
 
 
procedure TForm5.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
var
  FService: IFMXVirtualKeyboardService;
begin
  if Key = vkHardwareBack then
  begin
    TPlatformServices.Current.SupportsPlatformService
      (IFMXVirtualKeyboardService, IInterface(FService));
    if (FService <> nil) and (TVirtualKeyboardState.Visible
      in FService.VirtualKeyBoardState) then
    begin
      WebBrowser1.Visible:=false;
    end; end;
end;
 
 
procedure TForm5.SpeedButton1Click(Sender: TObject);
begin
WebBrowser1.Navigate;
WebBrowser1.Visible:=True;
end;
 
end.
Ссылка на комментарий
  • 0

А какие ещё способы проверки есть?

Экранная клавиатура сама свернулась, так как на форме не стало полей для ввода текста. Но

if (FService <> nil) and (TVirtualKeyboardState.Visible in FService.VirtualKeyBoardState)

всё равно возвращает True. :(

Ссылка на комментарий

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

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

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

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

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

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

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

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

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