DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: wugangbest
今日帖子: 26
在线用户: 24
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 yugong23 (yugong23) ▲▲▲▲△ -
普通会员
2018/6/8 2:37:10
标题:
Delphi 10.2.3 下 Android ShowModal 模式对话框 有解决方案吗 浏览:3036
加入我的收藏
楼主: 在网上看到的都是针对老版本的, 不知有何新进展。
----------------------------------------------
-
作者:
男 a5824 (Return) ★☆☆☆☆ -
普通会员
2018/6/8 9:22:40
1楼: 好像老猫有修改过
----------------------------------------------
-
作者:
男 yugong23 (yugong23) ▲▲▲▲△ -
普通会员
2018/6/9 0:36:54
2楼: 如果要开发一个大型或较复杂的应用程序,你要等待用户回答, 再做出相应处理。 仅靠那种回调函数/匿名远远不够。
Android仅仅是手机系统, 难道就因为是免费, 才从windows 向Android发展吗?
再等两年,delphi 新版支持 Linux 桌面开发, 移到LINUX下, 不就好了吗
----------------------------------------------
-
作者:
男 nevergrief (孤独骑士) ★☆☆☆☆ -
盒子活跃会员
2018/6/9 3:22:31
3楼: 高勇的通用界面里有很完善的各种模态对话框方案。
----------------------------------------------
只有偏执狂才能生存!
作者:
男 emailx45 (emailx45) ▲▲▲▲△ -
普通会员
2018/6/9 9:38:10
4楼: Try in (试试) http://www.fmxexpress.com/?s=modal

many samples for FMX / Android  (的许多样本) XE5..XE10.2

sub-links:  (子链接)
https://github.com/FMXExpress/Firemonkey
http://www.fmxdemos.com
http://www.fmxuniversity.com
http://www.fmxfeeds.com
----------------------------------------------
The higher the degree, the greater the respect given to the humblest!RAD 11.3
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/6/9 9:54:17
5楼: 为什么,我不再支持 模式化?
因为谷歌不高兴。
如果你特别喜欢模式化,就不要支持安卓了。

安卓开发,他们就不做对话框吗?不需要选 是否 吗?
人家怎么就不觉得回调不行呢?
----------------------------------------------
(C)(P)Flying Wang
作者:
男 gaoyong_gy (gaoyong_gy) ★☆☆☆☆ -
盒子活跃会员
2018/6/10 9:21:48
6楼: 3楼说的很对:

好东西也要宣传,打扰了,各位。只要您真的需要,只要真的能够帮助到您,钱真的不是问题,请耐心看完,谢谢。

Delphi移动(桌面)程序通用界面设计(20.0)全功能版
详情:https://item.taobao.com/item.htm?id=522707335329

1、没有使用任何第三方控件,近80个窗体界面任您选择,提供所有源码,毫无保留;
2、购买后加入一个售后群,会有不定期更新,超级划算,绝对物超所值;
3、大部分都可以窗口级引用,再稍微修改就变成你的了;
4、快速界面设计素材,非它莫属;
5、全是delphi原生控件,您不用担心升级问题。

您的支持,会导致此demo内容会越来越多。

如您资金确实有困难,可以QQ120180714联系我单独购买,否则请直接拍下即可。

已经购买的,请直接下载升级版本,谢谢支持。
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
男 gaoyong_gy (gaoyong_gy) ★☆☆☆☆ -
盒子活跃会员
2018/6/10 9:23:22
7楼:

本demo一直紧跟最新Delphi版本。

如果资金困难,可以QQ找我商量。
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
男 yugong23 (yugong23) ▲▲▲▲△ -
普通会员
2018/6/12 1:57:57
8楼: 没发现解决方法。
谢谢 emailx45 和  a5824
----------------------------------------------
-
作者:
男 bjweizi (bjweizi) ▲▲▲△△ -
普通会员
2018/6/14 23:40:10
9楼: 下面内容供参考:
所谓阻塞式对话框,就是调用Form->ShowModal()显示出来的对话框,点击这个对话框之外没有反应,只能点击对话框中的按钮才能关闭该对话框。然而在Android应用中不支持此调用,只能是效果一样的Form->ShowModal(回调函数)或Form->Show()调用。下面的方法实现模拟阻塞式对话框,其思路是该对话框Form完全覆盖调用页面,并设置为透明,对话框Form中设置不透明的对话框。设置如下:
Form->Transparencey=true //透明
Form->Fill->Kind=None //背景颜色无
此时显示效果如第2条类似,只是点击对话框之外没有反应。显然可以设置对话框在屏幕中间或下面等,如下图所示:


第1种方法对话框出现后,前一Form颜色变暗。这一功能实现方法是将前一Form的全部内容放入Panel1中,需要显示对话框前,加如下代码:
Panel1->Enabled = false; //使Form页面变灰色
对话框中按钮按下后,设置参数,关闭对话框;对话框Form的OnClose事件中加入如下代码:
前一Form->Panel1->Enabled = true; //恢复前Form显示。
效果如下:


该方法可以通过添加不同的透明控件调整对话框在屏幕上的位置。还有一种方法更逼真模拟前一Form变暗的效果:在对话框Form上增加Layout1,Align=Client;Layout1上增加Rectangle1,Fill->Color=Black,Fill->Kind=Solid,Opacity=0.4(0.4透明度);对话框Form上增加与Layout1同级的Rectangle2,作为对话框放置相关内容,注意对话框Rectangle2位置Align=Center居中,如果是其他位置则将与Layout1共同挤占Form。此时背景黑色透明度可以随意调整,其效果与第1种方法非常类似,如下图所示:
此帖子包含附件:
PNG 图像
大小:96.8K
----------------------------------------------
-
作者:
男 bjweizi (bjweizi) ▲▲▲△△ -
普通会员
2018/6/14 23:41:02
10楼: 第二张图片
此帖子包含附件:
PNG 图像
大小:123.1K
----------------------------------------------
-
作者:
男 bjweizi (bjweizi) ▲▲▲△△ -
普通会员
2018/6/14 23:41:27
11楼: 第三张图片
此帖子包含附件:
PNG 图像
大小:91.8K
----------------------------------------------
-
作者:
男 bjweizi (bjweizi) ▲▲▲△△ -
普通会员
2018/6/14 23:47:54
12楼: 上述例子的关键是对话框Form完全覆盖了屏幕,透明部分露出前景,但点击无效,达到类似效果。供参考。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/6/15 8:44:15
13楼: 虽然,EMB 写的对话框 文本需要改源码,但是,我还是推荐EMB的对话框。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 ksrsoft (cb168) ★☆☆☆☆ -
普通会员
2018/6/15 22:01:02
14楼: EMB有个最新的 18个UI 什么的,挺好
----------------------------------------------
-
作者:
男 yugong23 (yugong23) ▲▲▲▲△ -
普通会员
2018/6/20 23:22:57
15楼: 首先感谢大家参与讨论。
 bjweizi 还花了时间给出了具体方法和观点;
该实现方法我在去年做了个类似模型,我把源码发上来。它仅仅可以解决一些应用。
但bjweizi说:
所谓阻塞式对话框,就是调用Form->ShowModal()显示出来的对话框,点击这个对话框之外没有反应,只能点击对话框中的按钮才能关闭该对话框。
好像不完全对吧?
还应该具备最关键的一条: 后边的程序不能继续执行,等待回答结果, 再根据结果继续执行。
通用模型我理解应具备如下功能:

begin
xxxxxxx
xxxxxxx
xxxxxxx
对话框y/n
if y then begin
   xxxxx
   xxxxx
   end
 else
   begin
   xxxxx
   xxxxx
   end
 xxxxxx
 xxxxxx
 xxxxxx
 end;

另外,
 wang_80919 (Flying Wang) 说:
安卓开发,他们就不做对话框吗?不需要选 是否 吗?
人家怎么就不觉得回调不行呢?

我也在想这个问题, 可是找不到解决办法。 就觉得android毕竟是手机系统
和windows不是一个级别。它要解决的是小内存,小屏幕,弱cpu,弱显卡满足手机应用。
不知道wang_80919 (Flying Wang)用回调咋解决我上边的情况。
谢谢。
----------
此帖子包含附件:yugong23_2018620232257.zip 大小:147.3K
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/6/21 8:30:28
16楼: 我的意思是,回调用的好好的,吃多了搞 模式化?
WIN 系统,也一样可以用回调,丢掉 模式化,不影响 WIN 开发。

你希望 对话框 显示的时候,后面的代码不执行。在 安卓上,最好不要这样做。
用回调,就不存在所谓的后面的代码了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 yugong23 (yugong23) ▲▲▲▲△ -
普通会员
2018/6/21 21:43:47
17楼: 可能你还没理解我的意思:
一个大型项目很复杂,不是你说的一个回调可解决的。
我上面的模型不是简单的3行代码, 可能很长, 其中可能还会有对话等待回答
XXXXXXx
xxxxxx
.....
XXXXXX
我是说回调解决不了全部, 不是你说的:
回调用的好好的,吃多了搞 模式化。
你理解我的意思:
对话框 显示的时候,后面的代码不执行。
关键是系统很大, 硬要拆解,将会面目全非。

顺便提一下: 你就是 Wang wang 吧?
----------------------------------------------
-
作者:
男 yugong23 (yugong23) ▲▲▲▲△ -
普通会员
2018/6/21 22:29:17
18楼: 我经常上 Embarcadero 的网站, 这两年,发现 Delphi 有 bug 就到
 RAD Studio Quality Dashboard 上把它写出来, 让Delphi开发人员知道。

在  RAD Studio Quality Dashboard 下面有个
STATISTICS: RAD STUDIO (REPORTER)

我看到了华人的面孔,第一个就是我
John Shi    51 1%
Dance Liu   42 1%
Wenjie zhou 31 1%
Wang wang   29 1%
Eddie Chang 11 0%
后面还有。

也鼓励同行们这样做,使Delphi更完美。

软件使用排行榜是根据点击率计算的, 例如:TIOBE Index
Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings.
我们用百度多些, 权重且最小。这也说明, 它反映的不全面。
----------------------------------------------
-
作者:
男 nevergrief (孤独骑士) ★☆☆☆☆ -
盒子活跃会员
2018/6/21 23:41:43
19楼: 楼上真是好样的!!
----------------------------------------------
只有偏执狂才能生存!
作者:
男 yugong23 (yugong23) ▲▲▲▲△ -
普通会员
2018/6/22 6:01:53
20楼: 哦,15楼我附的例子是在Window下测试的, 刚才试了一下, 在Android下
需要把coverForm.BorderStyle 改成 Single等值, 不能是None。
----------------------------------------------
-
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2018/6/22 8:15:15
21楼: 主窗口:
procedure TForm1.Button1Click(Sender: TObject);
var
  AForm:TForm2;
begin
  AForm:=TForm2.Create(nil);
  AForm.ShowModal
  (
    procedure(ModalResult:TModalResult)
    begin
       AForm.free;
    end
  );
    showmessage('演示完毕');
end;
模式窗口:
procedure TForm2.Button1Click(Sender: TObject);
var
  ASum:integer;
begin
   ASum:=StrToInt(Edit1.Text)+StrToInt(Edit2.Text);
   if ASum=StrToInt(Edit3.Text) then
     showmessage('正确')
   else
     showmessage('错误');


end;

procedure TForm2.Button2Click(Sender: TObject);
begin
   close;
end;
不能实现模式窗口。主窗口运行至showmessage('演示完毕');这句不会停下等待。
只能这样,把相关语句放在匿名函数内,闭包运行:
procedure TForm1.Button1Click(Sender: TObject);
var
  AForm:TForm2;
begin
  AForm:=TForm2.Create(nil);
  AForm.ShowModal
  (
    procedure(ModalResult:TModalResult)
    begin
       AForm.free;
       showmessage('演示完毕');
    end
  );

end;
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/6/22 8:31:57
22楼: 楼主,你就是懒得修改你现有代码而已。
居然说什么 “不是你说的一个回调可解决的。”

如果你新写的,或者勤快地去改旧代码。
绝对能用回调解决。

其实,我就承认我懒。
不过,我不可能在 跨平台项目上存在旧代码。
既然肯定是新写的,就肯定用回调。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 yugong23 (yugong23) ▲▲▲▲△ -
普通会员
2018/6/22 21:52:03
23楼: 要同时支持几个系统,一个运行多年的软件会被弄得面目全非。
以勤快无关
----------------------------------------------
-
作者:
男 yugong23 (yugong23) ▲▲▲▲△ -
普通会员
2018/6/22 22:10:06
24楼:  sxqwhxq (步惊云), 你说的完全正确:
把相关语句放在匿名函数内,闭包运行。 
这种情形可以解决一些应用。
但是大型系统, 后面不相关语句内容还会很多, 当然也会有与用户交互的情况,
以此做出处理。 这种靠回调会把程序搞得很凌乱。 只适合手机之类的简单应用。
当然, 它本身就是手机系统。
我的情况是老板想省钱。 想这么做。
谢谢
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/6/23 12:10:25
25楼: 运行多年?
你多年前,就支持 安卓了?
问题是,第一版 XE5 开始,安卓就不支持 模式化。
对话框显示完,后面的代码一定继续运行。

除非你用了 特殊的办法,例如我以前的那种不合理的办法。

因为,不合理,所以我删了。再也不打算支持了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 sail2000 (小帆工作室) ★☆☆☆☆ -
盒子活跃会员
2018/6/23 13:43:15
26楼: 还是用 Windows 的思维去搞移动端,哎。
以下示例用 FMXUI ,来自音儿小白的好东西。
此帖子包含附件:
PNG 图像
大小:23.1K
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
男 sail2000 (小帆工作室) ★☆☆☆☆ -
盒子活跃会员
2018/6/23 13:54:08
27楼: 换个思维就那么难?
此帖子包含附件:
PNG 图像
大小:10.2K
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
男 olddelphier (oldDelphier) ▲▲▲▲△ -
普通会员
2018/6/23 20:26:59
28楼: showmodal很好用,奈何android不支持,
不能一套代码到处编译了
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/6/24 11:07:21
29楼: 使用 回调,支持所有平台。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2018/6/24 22:31:31
30楼: 怎样回调呢,大猫?
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/6/25 8:33:53
31楼: 你自己 21 楼最后一段不是写了吗
----------------------------------------------
(C)(P)Flying Wang
作者:
男 yugong23 (yugong23) ▲▲▲▲△ -
普通会员
2018/6/25 22:17:50
32楼: 我的系统原来是VCL很老的版本 d6, 有很多用户。 为了跨平台,从xe7 用 fmx重写。在Windows下交用户使用。一直跟着升级到Delphi最新版。具体跨平台代码如何写, Delphi 有介绍, 自己看, 也没时间争论。 老板早想用于Android, 但是首先是Windows。
我也提示他Delphi10.1下容易改, 10.2.2 下改动要很大, 结构要大变, windows下现行程序都会受影响, 他不听。 大概就这样。
Wang Wang, 你在说啥? 你看清楚我咋说的了吗? Delphi的历史我知道。
我要从头写个程序。 不会存在此情况。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/6/25 22:52:27
33楼: xe7 比 xe5 新吧。XE5 就规定了安卓下必须回调。你在 XE7 下就不知道么?
----------------------------------------------
(C)(P)Flying Wang
作者:
男 yugong23 (yugong23) ▲▲▲▲△ -
普通会员
2018/6/26 21:45:03
34楼: 当然知道, 但是首先是Windows。 新版Windows可用后才会考虑安卓版。
何况一直可以找到解决办法, 代码改动很小。直到10.2.1还可以找到方法。
我写这个帖子就是想找非官方的解决方法。 因为官方的大家都知道。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/6/26 22:15:22
35楼: 对不起,是我害了你。
我就不应该做非官方的版本。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 yugong23 (yugong23) ▲▲▲▲△ -
普通会员
2018/6/28 4:35:04
36楼: 也不能这么说, 我见过多个版本。有国内的,也有国外。 国外的多一些。
我到现在也不知道你做的是啥, 前面有人说老猫做的。。。
查了半天, 又追到Embardero 网站, 没发现完整的东西。
国内所谓的方法比较老, 大都在2016年左右出的。 也没名字。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/6/28 8:26:28
37楼: 那你就用国外的办法呗。
或者哪个办法支持 10.2.3 你就用哪个。
如果真有,大概你也不会提出这个问题了。
说明,他们都不打算支持了。
都被谷歌打败了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 olddelphier (oldDelphier) ▲▲▲▲△ -
普通会员
2018/6/28 8:52:33
38楼: 老系统升级没有showmodal改动确实很大
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行152.3438毫秒 RSS