-4

通常は Android の戻るボタンの機能をコーディングしなくても、前のフォームに戻ることができます。私のアプリでは、アプリケーションをシャットダウンする代わりに作業しています。私もコードで戻るボタンを処理しようとしましたが、これも機能せず、コードを無視しました!

戻るボタンを処理するために使用したコードは次のとおりです。

procedure TForm1.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
    begin
      // Back button pressed, keyboard not visible or not supported on this platform
      close;
    end;
  end;
end;

以前は Delphi XE5 を使用していましたが、現在は XE6 を使用しており、問題が解決することを願っていましたが、残念ながらそうではありませんでした。また、上記のコードは Delphi XE6 バージョン用で、XE5 の場合は少し異なります。

アップデート:

問題の解決策を見つけました。しかし、私のデルファイはまだ非常に奇妙な反応を示します。新しいプロジェクトを作成して以前のプロジェクトのファイルを追加すると、Android の戻るボタンで戻ることができます。しかし、プロジェクトを再度保存して実行しようとすると、すぐに機能しなくなります。

4

3 に答える 3

0

新しいディレクトリに新しいプロジェクトを作成し、すべてのファイルをプロジェクトに追加した後、問題は消えました! 問題は de dproj ファイルのどこかにあるようです。私も見つけようとしましたが、大きすぎて見つけることができませんでした。

于 2014-07-29T07:47:30.193 に答える
0

戻るボタンには、Android フレームワーク onBackPressed() の特別な機能があります。Delphi に移植されたかどうかはわかりませんが、移植されていると思います。その API を経由しない

于 2014-07-02T07:10:27.117 に答える
-1

FormKeyUp操作後にオペレーティングシステムに渡されないように、手順で「戻る」キープレスをトラップする必要があります。

if (Key = vkHardwareBack) then
  begin
    Key := 0;
    { Do something else }
  end;
于 2014-07-05T17:41:32.880 に答える