Delphi-xe5 를 갖습 안드로이드 개발.는 가장 좋은 방법은 무엇입을 무료 non-모달 양식?

StackOverflow https://stackoverflow.com//questions/20015519

문제

델파이를 위한 윈도우에 문제가 없는 무료(양식입니다.무료)폐쇄 차 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 위!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top