大家知道,用Delphi实现一个Form,并用ShowModal显示出来,是非阻塞的,如果我们需要类似阻塞的效果,该如何实现呢?
1.先建一个Form,跟通常的情况一样。
2.为Form实现具体的内容,这按你的需要了。
3.在窗口的单元中实现一个方法,用来显示这个窗口:
implementation{$R *.fmx}//调用方法:// ShowPrivacyForm(// procedure(AResult: TModalResult)// begin//// end);var PrivacyForm: TPrivacyForm;//声明一个私有变量procedure ShowPrivacyForm(AFormResult: TProc<TModalResult>);begin if not assigned(PrivacyForm) then begin PrivacyForm := TPrivacyForm.Create(Application); end; PrivacyForm.ShowModal( procedure(AResult: TModalResult) begin AFormResult(AResult);//这里执行回调 TTask.Run( procedure begin TThread.Synchronize(nil, procedure begin PrivacyForm.dispoSEOf;//释放这个窗口 PrivacyForm := nil; end); end); end);end;
4.显示这个窗口,首先引用Form所在的单元,然后调用显示窗口的方法ShowPrivacyForm:
ShowPrivacyForm( procedure(AResult: TModalResult) begin if AResult=mrCancel then begin Close; end else begin //用户点击了确定接钮 end; end);
5.细节处理,接管AndroID手机的返回键,当用户按返回键,相当于点击取消 *** 作:
procedure TPrivacyForm.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);begin if Key = vkHarDWareBack then self.ModalResult := mrCancel;end;
好了,一个完美的ShowModal窗口实现了!
核心代码引用专家的ChinaCock组件包中的Demo,这里表示感谢!
Delphi 10.4.2测试通过。
总结
以上是内存溢出为你收集整理的为Android做一个ShowModal窗口全部内容,希望文章能够帮你解决为Android做一个ShowModal窗口所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)