总结一下用到的知识(开发环境安装配置不计算在内):

  • 第六章  使用不同风格的按钮;
  • 第十七章  让布局适应不同大小与方向的窗体;
  • 第二十五章 使用 dbExpress访问 InterBase ToGo
  • 第二十九章  从移动客户端连接到企业数据库;

以下是具体制作步骤:

1、创建DataSnap服务VCL应用程序

1.1 创建服务程序

新建一个项目:Delphi Projects >DataSnap Server > DataSnap Server

 

1.   第一步,选择Forms Application项目类型。

2.   第二步,VCL Application应用程序类型。

3.   第三步,在服务器功能列表是选择TCP/IP协议、Server Methods ClassSample Methods

4.   第四步,保留默认的TCP/ IP通信端口211。这将确保客户端和服务器之间的通信将通过默认 DataSnap 端口。

5.   选择服务器继承至TDSServerModule

6.    保存窗体单元为DataSnapServerUnit

7.    切换到DataSnapServerUnit,并将窗体的Name属性更改为DSServerForm

8.   保存服务器方法单元 (默认情况下,通过该向导所创建︰ ServerMethodsUnit1)作为ServerModuleUnit

9.    保存服务器容器单元 (默认情况下,通过该向导所创建︰ ServerContainerUnit1)作为ServerContainerUnit

10.    将新项目保存为DataSnapServerProject

11.   在Project Manager选择 ProjectGroup1,并将项目另存为DataSnapTutorialProjectGroup.groupproj.

1.1定义DataSnap 服务器上的数据集

1.  切换到ServerContainerUnit.pas文件把implementation下的uses子句替换成:usesWinapi.Windows,ServerModuleUnit。

2.  切换到ServerModuleUnit.pas 文件。

3.   在窗体设计器,更改Name属性为DSServerModule_Demodata

4.   在服务器模块(ServerModule)配置以下属性:

(1)拖放 TSQLConnection 控件到服务器模块,并设置以下属性:

  • 设置 Name 属性为SQLConnection_Demodata.
  • 设置 LoginPrompt 属性为 False.
  • 设置 Driver 属性为 InterBase Server.
  • 展开 Driver节点,设置 DataBase属性为:G:\demo\DataSnap\database\DEMO_DATA.GDB.(本机数据文件位置。)
  • 更改 Connected属性为 True。

(2)拖放TSQLDataSet控件到服务器模块,并设置以下属性:

  • 设置 Name 属性为 SQLConnection_login.
  • 设置SQLConnection 属性为SQLDataSet_Demodata.
  • 设置CommandType属性为 ctQuery.
  • 设置 CommandText属性为 select CASE count(id) when 1 then 1else 0 end as cou from T_USER where user_name=:user_nameand pass=:pass

  • 点击Params后面[…]按钮,设置参数类型如下:

  • 更改  Active  属性为 True。

(3)拖放TdataSetProvider控件到服务器模块,并设置以下属性:

  • 设置 Name属性为 DataSetProvider_login.
  • 设置 DataSet属性为 SQLDataSet_login:

(4)拖放TSQLDataSet控件到服务器模块,并设置以下属性:

  • 设置 Name 属性为 SQLDataSet_city.
  • 设置SQLConnection 属性为SQLConnection_Demodata.
  • 设置CommandType属性为 ctTable.
  • 设置CommandText属性为 T_CITY.
  • 设置Active  属性为 True。

(5)拖放TdataSetProvider控件到服务器模块,并设置以下属性:

  • 设置 Name 属性为 DataSetProvider_city.
  • 设置 DataSet
    属性为 SQLDataSet_city:

1.3暴露DataSnap 服务器数据集

1.   在窗体设计器中,打开ServerContainerUnit.

2.   选择DSServerClass1,并更新OnGetClass事件的现有事件处理程序。DSServerClass1事件处理程序中添加以下代码:

PersistentClass := ServerMethodsUnit.TDSServerModule_Demodata;
 

1.4运行 DataSnap 服务

右键单击DataSnapServerProject.exe并选择Run Without Debugging

运行效果如下:

2、 创建连接到DataSnap服务器的移动应用程序

1.   在 ProjectManager,右键点击DataSnapTutorialProjectGroup,选择Add
New Project

2.   在Delphi Projects页选择Multi-Device Application


3.   保存新单元为DataSnapClientUnit

4.   保存新项目为DataSnapClientProject

5.   打开DataSnapClientUnit,更改Name属性为DSClientForm

6.   拖放以下控件到窗体设计器:

(1)TSQLConnection控件(SQLConnection1)

  • 设置Driver属性为DataSnap.
  • 展开Driver属性,并设置HostName 属性为DataSnap服务器的主机名或IP。
  • 设置 LoginPrompt
    属性为 False。
  • 设置 Connected
    属性为 True。

(2)TDSProviderConnection控件(DSProviderConnection1)

  • 设置 SQLConnection
    属性为 SQLConnection1。
  • 设置 ServerClassName为 TDSServerModule_demodata。此名称应匹配 DataSnap服务器的服务器模块中类的名称。
  • 设置 Connected
    属性为 True。

(3)TClientDataSet控件(ClientDataSet1)

l  设置 Name属性为ClientDataSet_login。

l  设置 RemoteServer属性为 DSProviderConnection1。

l  设置 ProviderName属性为:DataSetProvider_login。这个名称必须与DataSnap服务器提供者的名称匹配。

  • 点击Params后面[…]按钮,设置参数类型如下:

  • 设置 Active 属性为 True。

(4)TListView控件

  • 设置 Align 属性为 Client。
  • 其他设置如下属性:

(5)TLayout控件

  • 设置 Align 属性为Center.

(6)两个Tlabel,两个TEDIT,一个按钮控件放入Tlayout中;

  • 分别设置Tlabel的属性Text为用户名、密码;.
  • 设置EDIT2 属性PassWord为True;
  • 设置按钮Text属性为登录;

7.   打开LiveBindings Designer连接数据的用户界面,如下所示:

(1)点击BindSourceDB1中的 COU,拖动到ListView1中Visible;

(2)点击BindSourceDB1中的 COU,拖动到BindSourceDB2中Active;

(3)点击BindSourceDB2中的 CITY_NAME,拖动到ListView1中Item.Detail;

(3)选中LinkFillControlToField1,设置下图三个属性;

8.   双击按钮,在代码编辑器中输入如入代码:

if not((Edit1.Text.IsEmpty()) or(Edit2.Text.IsEmpty())) then
begin
ClientDataSet_login.Active := False;
ClientDataSet_login.ParamByName('user_name').Value := Edit1.Text;
ClientDataSet_login.ParamByName('pass').Value := Edit2.Text;
ClientDataSet_login.Active := True;
Layout1.Visible :=not(ClientDataSet_login.FieldByName('cou').AsInteger=);
end
else
ShowMessage('用户名或密码不能为空。'); ---------------------

9.   所有开发完成,可编译运行。发布IOS模拟器前需要部署MIDAS库,具体部署方法可参看Delphi XE8开发iOS和Android移动应用开发教程[完整中文版]》内的介绍

10分钟10行代码开发APP(delphi 应用案例)的更多相关文章

  1. delphi 牛逼 了 app (已在软件界掀起波澜)10分钟10行代码做出让人惊叹的程序

    (已在软件界掀起波澜)10分钟10行代码做出让人惊叹的程序 http://v.qq.com/x/page/m0328h73bs7.html?ptag=bbs_csdn_net

  2. 10分钟学会搭建Android开发环境 Eclipse: The import android.support cannot be resolved

    10分钟学会搭建Android开发环境_隋雨辰 http://v.youku.com/v_show/id_XNTE2OTI5Njg0.html?from=s1.8-1-1.2 The import a ...

  3. 零行代码为App添加异常加载占位图

    前文提要 近期准备重构项目,需要重写一些通用模块,正巧需要设置App异常加载占位图的问题,心血来潮设想是否可以零行代码解决此问题,特在此分享实现思路. 思路分享 对于App占位图,通常需要考虑的控件有 ...

  4. 零行代码为 App 添加异常加载占位图

    前文提要 近期准备重构项目,需要重写一些通用模块,正巧需要设置App异常加载占位图的问题,心血来潮设想是否可以零行代码解决此问题,特在此分享实现思路. 思路分享 对于App占位图,通常需要考虑的控件有 ...

  5. 如何从40亿整数中找到不存在的一个 webservice Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 WPF实战案例-打印 RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange

    如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...

  6. 半天做完的数据报表,YonBuilder只要十几分钟,0代码开发

    进入数字化时代,拍脑袋的决策方式显然不靠谱,一切要靠数据说话.与信息化时代相比,数字化时代的企业对数据的应用更广泛.更深入.为了应对激烈的市场竞争,企业经营决策者们对数据的依赖度越来越高,企业各个业务 ...

  7. 猿灯塔:疫情冲击,去体验远程面试被怼10分钟,今年Java开发找工作真难

    网行业,美团王兴曾说:“2019年可能会是过去十年里最差的一年,却是未来十年里最好的一年”.没想到预言竟然快成真了? 年前很多企业一波裁员,2020年又受疫情影响,延长了假期,各大企业复工时间拉长,招 ...

  8. Python 教你 4 行代码开发新闻网站通用爬虫

    \ ​ GNE(GeneralNewsExtractor)是一个通用新闻网站正文抽取模块,输入一篇新闻网页的 HTML, 输出正文内容.标题.作者.发布时间.正文中的图片地址和正文所在的标签源代码.G ...

  9. 10分钟,AppCan帮你搞定跨平台开发APP问题!

    跨平台开发APP时,开发者总会遇到一些问题,如打包失败等等,尤其对于iOS来说,由于它的限制性会导致一些状况发生(如证书上传问题等),小编总结了几个AppCan在线IOS打包失败常见的情况及排查技巧, ...

随机推荐

  1. 使用selenium遇到java.lang.NoSuchMethodError: org.apache.xpath.XPathContext,排查

    初试selenium webdriver,运行小程序,抛如下错误:   java.lang.NoSuchMethodError: org.apache.xpath.XPathContext.<i ...

  2. ajax 把返回结果作为参数传递

    这个涉及到js的异步执行了,程序本身是同步执行的,到了getJSON这里的时候,这个函数是异步的,而 load_val这个函数是同步的,你需要这样来异步返回这个值 function load_val( ...

  3. Xianfeng轻量级Java中间件平台:一期开发计划

    关于Xianfeng轻量级Java中间件平台,考虑到需要控制开发周期,通过分期开发的方式来实现一些基础的.常用的功能,这样有利于跟踪开发计划.一期的开发计划,主要实现的目标如下: 系统架构: 1.确定 ...

  4. 猫猫学iOS之小知识iOS启动动画_Launch Screen的运用

    猫猫分享,必须精品 原创文章.欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243? viewmode=contents 看下效果吧 比如新浪微博的 ...

  5. 编写高质量代码_改善C++程序的150个建议 读书笔记

    这几天看了下这本书<编写高质量代码_改善C++程序的150个建议>,觉的蛮有收获的,再次记录下自己以前不清晰的知识点,以供学习. 编写符合标准的main函数 C语言标准规定了main函数的 ...

  6. vue如何加搜狗联盟广告

    搜狗联盟广告和百度联盟广告大同小异,但是好在百度联盟广告的使用方法网上还是可以找到一些,而搜狗联盟广告的教程网上几乎找不到,都是最基本的创建代码位的教程. 在vue中如果要加入搜狗联盟广告,就不能直接 ...

  7. ubuntu12.04 折腾流水

    今天突然间update 一些软件后,就遇到了无法启动桌面,就是输入正确的用户名和密码后还是无法进入系统. 重启后,一直停留在waiting for network configuration, 然后显 ...

  8. Python 常用类库

    python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的libraries(modules)如下: 1 ...

  9. ios 查看模拟器路径以及应用的文件夹

    模拟器文件查看 好,这个时候选择往模拟器上面调试程序: 运行模拟器: 打开Finder,按住option,在菜单栏中选择“前往”->“资源库” 如果没发现资源库,则使用终端 命令行输入  ope ...

  10. SpringMVC由浅入深day01_5注解的处理器映射器和适配器

    5 注解的处理器映射器和适配器 在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandle ...