Delphi-xe5 를 갖습 안드로이드 개발.는 가장 좋은 방법은 무엇입을 무료 non-모달 양식?
-
21-12-2019 - |
문제
델파이를 위한 윈도우에 문제가 없는 무료(양식입니다.무료)폐쇄 차 dynamicaly-형태로 만들었기 때문에 어디에"ShowModal"방법입니다.델파이 그러나 안드로이드에 대한 지원하지 않는 양식입니다.ShowModal 고,우리가 사용하는 표시 방법입니다.하지만 나는 무엇 때문에(양식입니다.닫기)이차 양식 그것은 여전히 메모리에서도 코드를 실행하는 레이아웃 논리를 강제로 적 이벤트(???).는 가장 좋은 방법은 무엇입을 자유 형태에서 모달이 아닌가?
에서 다른 말로:종료하려면 어떻게 해야 하는 형태에서 OnClick 이벤트 처리기에는 형태로,그리고 보는 형태의 소멸자 실행?
해결책
업데이트
중요 정보를 참조하세요 아래.
에 xe5 를 갖습 안드로이드에 대한 가능성이있을 표시하는 형식으로 모달 결과,오버로드 ShowModal
절차를 사용하는 방법 익명:
절차 ShowModal(const ResultProc:TProc);과부하;
당신이 그것을 찾을 수 있습니다 이 문서에서 설명에 의해 마르코 칸투 Delphi XE5 Anonymous ShowModal and Android
.
여기에는 방법을 예를 들어 이 절차를 사용하려면:
var
dlg: TForm1;
begin
dlg := TForm1.Create(nil);
// select current value, if avaialble in the list
dlg.ListBox1.ItemIndex := dlg.ListBox1.Items.IndexOf(Edit1.Text);
dlg.ShowModal(
procedure(ModalResult: TModalResult)
begin
if ModalResult = mrOK then
// if OK was pressed and an item is selected, pick it
if dlg.ListBox1.ItemIndex >= 0 then
edit1.Text := dlg.ListBox1.Items [dlg.ListBox1.ItemIndex];
dlg.DisposeOf; // Wrong !!!, see note below
end);
Note dlg.DisposeOf;
을 강제로 형태를 파괴,재정의 아크 자동적인 처리가 있습니다.
또한 찾을 수 있습니다 설명서 설명서 Using Modal Dialog Boxes in Mobile Apps
그리고 여기에, ShowModal Dialogs in FireMonkey Mobile Apps
.
발견으로 다른 사람에 의하여, http://www.malcolmgroves.com/blog/?p=1585, 을 호출, DisposeOf
내부에 익명의 방법은 잘못하기 때문에 익명 프레임을 처리할 수 있어야 합니다 ModalResult 에서 유효한 객체입니다.이 패턴을 사용하는 대신 무료로 모달화, 을 확보하 모달을 대화 상자.
procedure TModalForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := TCloseAction.caFree;
end;
다른 팁
objectInspector
에서 설정하는 것을 잊지 마세요.ModalResult = mrOK
.
또는 귀하의
procedure TForm1.ExitButtonClick(Sender: TObject);
begin
ModalResult := mrOK;
end;
.
예제 dlg.showmodal 위!