0
Android 애플리케이션에 Marco Cantu's ShowModal example을 사용하고 있습니다.델파이 Android 애플리케이션 - ShowModal 양식으로 mrCancel 처리
procedure TForm1.Button1Click(Sender: TObject);
var
Form2: TForm2;
begin
Form2 := TForm2.Create(nil);
Form2.ShowModal(
procedure(ModalResult: TModalResult)
begin
if ModalResult = mrOK then
begin
ShowMessage('OK');
Form2.DisposeOf;
end
{ else
begin
ShowMessage('Cancel');
Form2.DisposeOf;
end;}
end);
end;
가 어떻게이 mrCancel을 처리하나요 : 어떻게 당신은 여기
mrCancel
에 대한 내 코드입니다 처리하나요? 사용자가 데이터를 입력해야하는 컨트롤이있는 양식이있는 경우 해당 양식을 취소하고 기본 양식으로 돌아갈 수있는 옵션을 제공하고 싶습니다.2 차 양식의 확인 버튼에 mrOK를 한 것처럼 취소 버튼에 대해 mrCancel에 모달 결과를 지정했음을 유의해야합니다. 확인 버튼은 잘 작동하지만 취소 버튼을 클릭하면 앱이 아무 것도하지 않고 확인 버튼을 다시 클릭 할 수 없도록 만듭니다.
내가 할 수 있었던 나는 가정했을다음
var
Form2: TForm2;
begin
Form2 := TForm2.Create(nil);
Form2.ShowModal(
procedure(ModalResult: TModalResult)
begin
if ModalResult = mrOK then
begin
ShowMessage('OK');
Form2.DisposeOf;
end
end);
end;
그리고 난 취소 버튼의 modalresult 속성에 mrCancel을 할당 할 수 있었어야 -하지만 당신은이
두 번째 해결책이 작동하지 않습니다. 취소 showmessage는 모달 대화 상자 양식이 나타나기 전에 표시됩니다. 대화 상자에서 버튼 (확인 또는 취소)을 클릭하면 전체 앱이 종료됩니다. 왜 코드의 해당 부분을 먼저 호출 하는지를 아는 것은 흥미로울 것입니다. 첫 번째 해결책은 효과가있는 것처럼 보이지만 더 테스트해야합니다. – LuvRAD
기본 양식의 showmodals가 문제의 원인입니다! 나는 그것들을 제거하고 지금은 잘 작동하는 것 같다. – LuvRAD
올바른 패턴을 보려면 [델파이 firemonkey 모바일 응용 프로그램에서 모달 대화 상자 닫기 (Android)] (http://stackoverflow.com/a/26875930/576719)를 참조하십시오. FireMonkey의 모달 형식. DisposeOf 대신 모달 대화 상자의'OnClose' 이벤트에서'Action : = TCloseAction.caFree; '를 설정하십시오. –