cppBuilder
TForm
#migrated

C++ Builder XE4, 10.2 Tokyo > ModalResult > Close時はmrCancel

動作環境
C++ Builder XE4
RAD Studio 10.2 Tokyo Update 2 (追記: 2018/01/05)

Form1からForm2をShowModal()で開いている場合を考える。
Form2を閉じた時の戻り値はModalResultの値になると認識している。

Form2でClose()した場合にModalResultの値はどうなるか疑問に思った。

関連

モーダルなフォームのOnShowイベントでそのフォームを閉じる by Owl's perspectiveさん

情報感謝です。

Close()した時のModalResult値

上記リンク先ではDelphi2007のForms.pasにてModalResultへの代入例がある。

XE4の場合は、Vcl.Forms.pasが該当しそう。

TCustomForm.Closeにおいて以下の実装が見つかった。

Vcl.Forms.pas
procedure TCustomForm.Close;
var
  CloseAction: TCloseAction;
begin
  if fsModal in FFormState then
    ModalResult := mrCancel
  else
    ...
    end;
end;

実際にClose()で閉じた場合はmrCancelになることを確認した。

フォームを開いた時にModalResultの値をmrNoneにする例などを見たことがあるが、Close()をした場合には上記の例ではmrCancelになる。