2016-12-19 33 views
0

私はこれが私の手順ですFMX.Platform.IFMXDialogServiceAsyncDelphi Non-Blocking MessageDialogの例どのように?

を使用して問題を持っている:

以下
procedure TFormMain.btnLogoutClick(Sender: TObject); 
var 
    ASyncService : IFMXDialogServiceASync; 

begin 

    ASyncService.MessageDialogAsync('Do you want to logout?', TMsgDlgType.mtInformation, 
    [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], 
    TMsgDlgBtn.mbNo, 
    0, 
    procedure(const AResult: TModalResult) 
    begin 
     case AResult of 
     mrYes: 
     begin 
      Close; 
     end; 
     mrNo: 
     begin 
     // pressed no 
     end; 
     end; 
    end 
); 

end; 

はエラーというポップアップです:

Androidデバイスとエラーショーに直接しようとしました
Access violation at address 
A29FC4F2, accessing address 
00000000. 

このプロシージャがトリガされるたびにEmbarcaderoのドキュメントに目を通しましたが、そのための例はありませんでした。私は http://c2design5sh.blogspot.co.id/2016/05/rad-studio-dx-101-berlin-dialog-api.html

上で使用することをいくつかの例を書い

誰かが私はMessageDlgは廃止行く見つけたので、誰もが?,アンドロイドで新しい方法MessageDialogを行う方法であっ伝えることができますです。

+1

初期化されていない変数を使用しています。あなたはあなたのメソッドに存在する変数 'ASyncService'を宣言します。それから、最初に何かを割り当てずに使用します。あなたはチュートリアルにもっと注意を払うべきです。そして、コンパイラはあなたのコードが間違っていると言っても気にしません。これはかなり悲しいことです。 –

+0

あなたは正しい!、私はそれが必要であるとは思わないので「if」を削除しました。ありがとう!!!、その解決! –

答えて

4

リンク先の記事のコードを使用するだけで済みます。あなたはそうしなかった。サンプルコードは、このフォームがあります:

var 
    ASyncService : IFMXDialogServiceASync; 
.... 
if TPlatformServices.Current.SupportsPlatformService(IFMXDialogServiceAsync, IInterface (ASyncService)) then 
begin 
    ASyncService.MessageDialogAsync(....); 
end; 

あなたのコードはASyncService変数に割り当てることができません。したがって、ランタイムエラー。

関連する問題