XE7 - ListView自测笔记
这两天主要是摸索着使用了ListView和SQLite。郁闷过,也有收获。
一、SQLite
首先记录下SQLite自己碰到的几个小问题:
1. SQLite中字符串连接符是‘||’, 换行符为 x'0A'。
select *, substr(BuyDate,6,2)||'月'||substr(BuyDate,9)||'号 '||x'0A'||'数量: '||BuyNum from TableA
2. 日期时间函数
strftime
其它的暂时没咋涉及到,用的时候可以参考下:http://www.cnblogs.com/stephen-liu74/archive/2012/01/13/2322027.html。
个人感觉跟Access差不多少。另外,SQLite客户端工具用的是Navicat for SQLite,网上大把的下载链接。之前用过Navicat for MySQL,所以也不陌生。
二、ListView
从昨天下午开始折腾,终于有个初步的结果:

1. 控件说明:
(1)截图中FDGUIxWaitCursor1控件一定要手动加上,否则编译后在手机上运行时会报错(反正在红米上试过,肯定会),提示啥啥啥没注册:

(2)FDConnection1,FDQuery1也是手动拖放到窗体的,其余的BindSource1,BindSource2, BindingsList1都是在设置ListView的相关属性时自动生成的。暂时还没深入去搞明白具体是咋回事,先学会用再说吧。
FDQuery目前我就当成ADOQuery用,暂时来看查、删、改还没发现有多大区别。主要用到的是SQL属性。
FDConnection1个人理解就等同于ADOConnection的作用,也有个LoginPrompt属性。属性一大堆,目前用到的其它属性还有DriverName, Params.Database。可以手动去设置这些属性值,也可以双击FDConnection,在弹出的属性设置窗口中操作。

(3)ListView
折腾的过程中在网上搜索到的介绍ListView的网页,都说这是最重要的控件之一。XE7有自带ListView的几个Demo,我的目录在: C:\Program Files (x86)\Embarcadero\Studio\15.0\Samples\Object Pascal\Mobile Samples\User Interface\ListView。用的时候也切身感受了一把,结合目前所用(有些狭隘),体会如下:
只要能把ItemAppearence、ItemAppearenceObjects这两大属性搞定,基本就没啥问题。
ItemAppearence中ItemAppearence决定ListItem的布局。默认的有几种,上边提到的XE7自带的ListView的Demo目录下有额外的俩Appearence:SampleListViewMultiDetailAppearancePackage.dpk, SampleListViewRatingsAppearancePackage.dpk,可以手动安装下。安装后,在ItemAppearence属性的下拉选择框中会列出,具体啥效果,折腾下就明白了。
ItemAppearenceObjects又细分为FooterObjects、HeaderObjects、ItemEditObjects、ItemObjects四部分。这四部分中个人感觉尤以ItemObjects为重。(开始写这篇笔记前也曾想写的尽量详尽些,有些难,昨天在网上请教一些老大时,没几个人回,所以也只有自己多折腾几次,才能逐步掌握,文采不好,写不出想要的效果)。ItemObject中的Accessory、Detail、Image、

接下来就是LiveBindings Designer了。可以直接在窗体上右键选择Bind visually菜单项,或者在IDE的菜单栏选择View - LiveBindings Designer。

咋总结呢?我觉得还不如DevExpress那一套用的痛快,在DEV中,各个数据感知控件选择下数据源、字段基本就搞定了,这个LiveBindings Designer感觉不太好使,慢慢习惯吧。反正就目前来理解,道理都差不多,就是绑定数据源。倒也是,目前用到的都是皮毛,所以还没发现它的优点。过程中碰到的问题之一是BindSourceDB1中没有可以选择的内容,后来将FDQuery1开关一次就好了。这里之所以说不好使,也是有原因:
碰到的另外一个问题是,处理ListItemOnClick事件时,不知道ListItem怎么记录主键的值,因为自己设计的SQLite表中字段的值存在重复的可能,无法定位。没办法了,就拐了个弯,用不显示Item.Detail,而专门用来记录主键的值。但是这样又导致ListView显示不了太多的东西。所以二次折中,将Item.Text换行显示,当然要先将ItemAppearenceObjects - ItemObjects - Text - WordWrap设为True,允许换行,效果截图已经在上边了。这也是本文开头记录SQLite换行字符的缘由。
procedure TAchivementForm.ListView1ItemClick(const Sender: TObject; const AItem: TListViewItem);
begin
FDQuery1.Locate('MID', AItem.Detail);
if not Assigned(FAcivementDetail) then
FAcivementDetail := TAchivementDetail.Create(nil);
FAcivementDetail.AchivementDetailState := adsView;
FAcivementDetail.Show;
end;
就写到这了,赶紧继续去折腾,晚上回去该学Android Studio了,落下2天了。
XE7 - ListView自测笔记的更多相关文章
- ListView与Adapter笔记:ZrcListView
怕自己说的不清不楚,先来一个郭神的文章镇楼:http://blog.csdn.net/guolin_blog/article/details/44996879 github:https://githu ...
- Hadoop_10_12虚拟机01_虚拟机NAT方式联网【自己的亲测笔记】
NAT方式 1.查看网络信息--ifconfig(同windows中的ipconfig相同) 主要关注的是第三行内容,分别是Ip地址.广播地址.子网掩码 2.安装完系统后需要配置三个地方--IP地 ...
- Hadoop_10_11虚拟机02_虚拟机桥接方式联网【自己的亲测笔记】
[桥接方式] 说明:自己搭建的时候用的是桥接,因为用的是2两个物理机搭建3台虚拟机所以采用桥接便于三个虚拟机在一个网段,但是不知道对后期有没有影响,目前搭建成功 (1)设置桥接方式 查看本地连接网 ...
- ArcGIS JS 学习笔记1 用ArcGIS JS 实现仿百度地图的距离量测和面积量测
一.开篇 在博客注册了三年,今天才决定写第一篇博客,警告自己不要懒!!! 二.关于ArcGIS JS 版本选择 在写这篇博客时ArcGIS JS 4.0正式版已经发布.它和3.x版本的不同是,Map不 ...
- Android学习笔记(十一)——ListView的使用(下)
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! ListView 这个控件比较复杂, 就是因为它有很多的细节可以优化,下面我们在试试提高它的运行效率:一.提高 ...
- Android学习笔记(十)——ListView的使用(上)
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! ListView绝对可以称得上是 Android中最常用的控件之一,ListView允许用户通过手指上下滑动的 ...
- 安卓第六天笔记--ListView
安卓第六天笔记--ListView 1.AdapteView AdapteView 继承ViewGroup它的本质是容器 AdapterView派生了3个子类: AbsListView AbsSpin ...
- android学习笔记12——ListView、ListActivity
ListView.ListActivity ==> ListView以垂直列表的形式显示所有列表项. 创建ListView的方式: 1.直接使用ListView创建 2.Activity继承Li ...
- Android群英传笔记——第四章:ListView使用技巧
Android群英传笔记--第四章:ListView使用技巧 最近也是比较迷茫,但是有一点点还是要坚持的,就是学习了,最近离职了,今天也是继续温习第四章ListView,也拖了其实也挺久的了,list ...
随机推荐
- java eclipse 监视选择指定变量
http://3y.uu456.com/bp_8tzmk3zobb7k6x46aj28_1.html 有时一个Java程序有许多变量,但你仅对其中一个或几个感兴趣,为了监视选择的变量和表达式,你可以将 ...
- c# 执行批处理文件
ProcessStartInfo proc = new ProcessStartInfo(); proc.UseShellExecute = false; proc.CreateNoWindow = ...
- Loadrunder脚本篇——文件下载
下载简介 对 HTTP协议来说,无论是下载文件或者请求页面,对客户端来说,都只是发出一个GET请求,并不会记录点击后的“保存”.“另存为操作”. 如下,点击页面中tar.gz压缩包,用工具可以清楚的看 ...
- 服务中的 API 网关(API Gateway)
我们知道在微服务架构风格中,一个大应用被拆分成为了多个小的服务系统提供出来,这些小的系统他们可以自成体系,也就是说这些小系统可以拥有自己的数据库,框架甚至语言等,这些小系统通常以提供 Rest Api ...
- Linux Shell基础 Shell的输入重定向和输出重定向
概述 在 Linux 中输入设备指的是键盘,输出设备指的是显示器.在 Linux 中,所有的内容都是文件,计算机硬件也是文件,标准输入设备(键盘)和标准输出设备(显示器)也是文件.这些设备的设备文件名 ...
- JS 操作复制剪切粘贴
测试了很多次之后,虽然有点细碎的突破,但还是想说,麻辣隔壁... 众所周知使用 oncut/oncopy/onpaste 监听剪切板,采用 window.clipboardData 并不是适用于大多浏 ...
- 【Head First Servlets and JSP】笔记16:JSP隐式对象(内置对象)的映射关系
接笔记15. 1.不管是JSP中的<%%>还是<%\=%>最终都将处于servlet的方法体中,那么有没有一种元素可以声明成类的成员呢? ——答案是有,而且非常非常简单,这个元 ...
- 原生javasxript获取浏览器的滚动距离和可视窗口的高度
原生javasxript获取浏览器的滚动距离和可视窗口的高度 //封装兼容性方法获取滚动的距离 function getScrollOffset(){ if(window.pageXOffset){ ...
- 根据Django后台的ajax大全
一.什么是ajax 1.1 什么是JSON? AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语 ...
- iOS应用网络安全之HTTPS
移动互联网开发中iOS应用的网络安全问题往往被大部分开发者忽略,iOS9和OS X 10.11开始Apple也默认提高了安全配置和要求.本文以iOS平台App开发中对后台数据接口的安全通信进行解析和加 ...