Delphi XE7 手机开发学习笔记之一-第一次Hello

之前说过,Delphi XE7是做的比较成熟的产品了,更像是一个Delphi XE6的update2版本,目前看来比较稳定,对于Firemoney框架的不断完善使得手机跨平台开发方便许多。

一年前,XE5出来的时候,也做了一点学习笔记,不过没有坚持下去,一方面自己的问题,一方面当时还是碰到不少技术上的问题无法解决,因此感觉做完整应用有些困难。

或许这次可以坚持,版权所有,可以转载,不得用于商业用途。如果真的可以写个几十篇,我就自己用在商业用途了,经济还是物质的基础。

国内Delphi手机开发的资料不多,并且大多数以android举例,当然android的确机器比较便宜,不过使用iphone的人的购买力要强很多,所以如果从商业应用角度考虑,还是不能忽视iphone市场,特别是XE7本来就是跨平台开发的,如果只做android,还不如用java算了。

作为一个中等发烧友,我准备了iphone、android的各类手机和pad,来体验一下跨平台的魅力。只有跨平台,才是真正的节约生产力。

前言到此为止。

第一篇学习笔记,从一个小小的Hello程序开始,还是向Hello World致敬。

新建一个项目。

当然是 Multi-Device Application,XE7中很牛的技术,到后面就知道了。选择 Tabbed,这种界面样式是手机中最常用的,有几个选项卡的方式,基本是一般应用的默认界面了,在tab中可以设计非常复杂和漂亮的界面,但是主体用tabbed界面是没问题的,用户也非常容易掌握。

project 名字修改为 hello,主程序pas文件修改为 uHello。这是我的习惯,个人按照自己喜欢的命名风格即可。

xe7_mobile_hello_1

界面修改。

1 去掉最上面的 HeadToolBar。

2 在第一个 TabItem中,增加一个 ToolBar,会自动设置自己的 Align 为 Top ;在 ToolBar 中增加一个 label ,作为 ToolsBar 的标题,设置 Align 为 Contents ,在 StyleLookup 属性中设置为 toollabel ,在 TextSettings 中设置 HorzAlign 为 Center ,然后设置 Text 为common vcl ,这样这个标签就显示在工具栏中,并且居中。

3 增加一个按钮和标签,和以前 windows 编程一样,等一下按钮点击后,标签显示 Hello出来,这个例子也就ok了。

procedure TTabbedForm.btnHelloClick(Sender: TObject);
begin
  lblHello.Text:='Hello';
end;

现在界面应该是这样的了:

xe7_mobile_hello_2

增加手机Views

注意到在窗口编辑上方有一个Style和Views,在Views这里可以选择添加各类手机样式和屏幕尺寸。一开始默认的时候是Master,我添加了iPhone 4寸和Android 5寸,在新的View下,界面元素会按照你选择手机的样式呈现,这个很棒。

xe7_mobile_hello_3

 

比如ios上的tab默认是在下方的,而android则是在上方的,在这样的真是视图上基本按照真机来呈现的。iphone和android在界面呈现控制上的很多不一致有了这个Views就好办了,我测试下来可以在不同Views下面进行界面控件的微调,来保证适应不同的操作系统,控件后面的业务逻辑代码还是一致的。

真机测试

可以先按照默认的win32平台作为目标进行测试,看看程序有没有错误。

对于android,只要usb连接到电脑,在项目管理器中就能认出来,选中后,就可以分发到真机上运行。如下图,在Android的Target中有一个华为的手机。

xe7_debug_android

 

android运行效果如下:

xe7_mobile_hello_andoird_1 xe7_mobile_hello_andoird_1a

 

iphone 的设置稍微复杂一些,需要有一台苹果机,然后下载 XCode ,XCode 安装的时候会安装最新的 ios sdk, 在苹果机上安装 Delphi 用来调试的 PAServer 后,再在 Delphi XE7 中设置连接、设置 sdk 等,这些在 Delphi XE7 的帮助中写得非常详细,这里就不说了。

如果要在真机调试,需要有 apple 的开发者账号。

xe7_debug_iphone

这样你就可以将程序分发到苹果机上的iPhone模拟器来看效果了,如下:

xe7_mobile_hello_iphone_1 xe7_mobile_hello_iphone_1a

跨平台的Hello完成了。原生界面和原生编译带来的体验和执行速度都很不错,不是之前html5的那些框架能比拟的。

 

Leave a Reply