私はFireMonkeyに移植しているVCLアプリケーションを持っています。私が遭遇したことの1つは、MessageDlg(...)
がFireMonkeyでは廃止されていることです。さらに掘り下げていくと、私はFMX.DialogService.MessageDialog
メソッドを使用しなければならないことを理解しています。だから私は、ダイアログを表示する機能を作成しました:Delphi - FireMonkeyでメッセージダイアログを正しく表示し、モーダル結果を返す
function TfMain.GetDeleteConfirmation(AMessage: String): String;
var
lResult: String;
begin
lResult:='';
TDialogService.PreferredMode:=TDialogService.TPreferredMode.Platform;
TDialogService.MessageDialog(AMessage, TMsgDlgType.mtConfirmation,
[ TMsgDlgBtn.mbYes, TMsgDlgBtn.mbCancel ], TMsgDlgBtn.mbCancel, 0,
procedure(const AResult: TModalResult)
begin
case AResult of
mrYes: lResult:='Y';
mrCancel: lResult:='C';
end;
end);
Result:=lResult;
end;
私は匿名メソッド内のローカル変数を設定することができますかわからないとして、私はこの権利をやっているとは思わないが、それにもかかわらず、コンパイルします。
私はそうのようにそれを呼び出す:
if GetDeleteConfirmation('Are you sure you want to delete this entry?')<>'Y' then
exit;
私はそれを実行すると、示すメッセージダイアログがこれです:
それは2つのボタンが表示されない(はい、キャンセル) 。誰かがこの権利を得る手助けをしてくれますか?つまり、2つのボタンを使ってメッセージダイアログを正しく表示し、メッセージダイアログのモーダル結果を関数の結果として送り返してください。
私は事前にデルファイ10.1ベルリンの更新2.
感謝を使用しています!
EDIT 20170320:私は以下@LURDによって正解に基づいて私のコードを修正し、完全を期すためにここでそれを含めています:
function TfMain.GetDeleteConfirmation(AMessage: String): String;
var
lResultStr: String;
begin
lResultStr:='';
TDialogService.PreferredMode:=TDialogService.TPreferredMode.Platform;
TDialogService.MessageDialog(AMessage, TMsgDlgType.mtConfirmation,
FMX.Dialogs.mbYesNo, TMsgDlgBtn.mbNo, 0,
procedure(const AResult: TModalResult)
begin
case AResult of
mrYes: lResultStr:='Y';
mrNo: lResultStr:='N';
end;
end);
Result:=lResultStr;
end;
匿名メソッドの中からローカル変数を設定して、ビットがOKになるようにすることができます。私は残りの部分も間違っていると見ることはできません。 – Dsm