作者:
2017/5/1 9:47:13
1楼:
此帖子包含附件: 大小: 717.9K
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/1 9:47:23
2楼:
此帖子包含附件: 大小: 459.2K
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/1 9:48:07
3楼:
此帖子包含附件: 大小: 425.6K
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/1 9:48:21
4楼:
此帖子包含附件: 大小: 186.2K
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/1 9:48:35
5楼:
此帖子包含附件: 大小: 143.1K
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/1 9:48:48
6楼:
此帖子包含附件: 大小: 202.7K
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/1 10:37:05
7楼:
此帖子包含附件: 大小: 172.5K
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/1 12:52:36
8楼:
好奇的问一下,有上推添加 item 功能吗?
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
2017/5/1 14:33:31
9楼:
有的。
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
wsswyz (wsswyz)
★☆☆☆☆
-
盒子活跃会员
2017/5/1 18:32:17
10楼:
老高大作!必须支持!
----------------------------------------------
-
作者:
2017/5/2 17:21:53
11楼:
明天结束。
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/2 23:23:06
12楼:
CustListView,完全达到目的。而且是免费、开源。
----------------------------------------------
菩提本无树,明镜亦非台,本来无一物,何处惹尘埃
作者:
2017/5/3 7:59:56
13楼:
@google220 总有懒人,花钱图省事,也是节约时间的方法
----------------------------------------------
-
作者:
2017/5/4 10:58:09
14楼:
没有源码的不敢商用
----------------------------------------------
简单做人,认真做事。
作者:
2017/5/4 12:19:56
15楼:
桔子ui中的FmxListView免费,功能一样。
----------------------------------------------
-
作者:
zhipu (zhipu)
★☆☆☆☆
-
普通会员
2017/5/4 13:05:31
16楼:
原价999999万,特价1块钱,真搞笑
----------------------------------------------
-
作者:
2017/5/4 15:48:52
17楼:
你是不是没做过程序。这个还强大。
----------------------------------------------
-
作者:
2017/5/5 17:52:02
18楼:
没有了解的,不要瞎说, 最近有更新了:
此帖子包含附件: 大小: 86.6K
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/5 17:52:25
19楼:
功能简要说明
此帖子包含附件: 大小: 94.9K
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/5 17:52:58
20楼:
更加简易合理了。
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/5 17:54:40
21楼:
如果您的啊个窗口要用listview,直接将此form1上拷贝走即可,不用修改控件任何属性,对应代码直接抄写,稍微修改一下即可。
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/5 17:58:22
22楼:
关于本《移动程序listview可视化定制控件GYlistview》demo使用的说明 如果你不看,你会有很多问题要问我。相信我。高勇 2017.05.05 于西安,QQ120180714。 详情:http://blog.163.com/you888@188/blog/static/67239619201510255924548/ 如果打开您的窗体时,提示属性不存在,请忽略所有,您所有的窗口最好都要打开一次,这是升级控件后的常用作法。 1、它是什么? 本demo是一个由高勇修改的GYlistview控件来制作的关于listview的综合设计展示,这个控件是手机设计里面必不可少的关键控件,对比原来的listview,功能大大扩展了,这个demo将是您设计您的界面时的可以直接拷贝的素材,必会大大节省您的界面设计时间。Form0是本demo的一开始的主窗口(您可以将其设计为登录窗口,如果必须先登录的话),其它所有窗口都不自动生成,需要时才生成。Form0是为了减少安卓黑屏时间的一个过度窗口,它打开后,自动延时后打开真正的主窗口form1,你可以看看代码,主窗体已经切换到form1了。好了,本demo其实真正的主窗体是form1,其它窗体都基本独立完成一个功能,互相之间基本没有什么关系。 2、如何入门 (1)先要安装对应的GYlistview控件,安装使用教程在控件包里,请一定详细查阅。否则您会走很多弯路。 (2)本demo的from1详细展示了该控件的所有常用使用技巧,请至少学会抄袭。其它窗口请参考使用。各种调用方法,请尽量采用form1的方式,这是新的使用方法。 3、使用透明状态栏与导航栏(几乎是必需的,否则真的不好看) 您必须完成以下步骤: (0)将Delphi10.1Update2_FixedDelphiPas文件夹拷贝一个安全的地方,这是对Delphi10.1update2的系统文件的一系列修正,是很多人花了好多时间得来的宝贵的劳动成果,请加入到您的项目的搜索路径中去(不会去百度,我还是截图吧),所有平台都要加入,不加入,以下透明状态栏导航栏无效果。 (1)将GYTranslucentStatusAndNavBar.pas拷贝到你的项目根目录,在你的每个单元use它。 (2)你的主窗口的onCreate事件要加入如下代码(要写在最前面,只需要调用一次即可) SetTranslucentForD101Update2; //设置D101Update2为透明状态栏和导航栏 (3)你的所有窗口的onCreate事件要加入如下代码 procedure TForm4.FormCreate(Sender: TObject); begin TranslucentStatusAndNavBar(self, Rectangle_02); // 将状态栏与导航栏透明显示,顺便做一些每个窗口必须要做的处理 end; (4)你的窗口的onResize事件要加入如下代码 procedure TForm4.FormResize(Sender: TObject); begin HideNavBar_GY(self); // 横屏时,将导航栏的背景移动到右边 end; 4、每个窗体基本独立,有引用也是为了调用那个窗体,不算什么偶合紧密。Form1要打开其它窗体,自然要引用其它所有窗体。如果您有不懂的地方,源码都安静的躺在那里,花点时间安静的看看,一定会有收获的。 5、修改历史 2.0 forD10.1update2 2017-04-18更新说明: 1、修正上一版本显示出数据后,在滑动的过程中有可能数据消失的bug; 2、将每个item的文本字段由原来的15个增加到20个; 3、修改了当窗体宽度尺寸发生变化时,更新item里字段显示位置的算法,更加快捷与实用了。 3.0 forD10.1update2 2017-04-19更新说明: 1、新增加一个通用的ListView1GetData过程,用来通过3层分页查询数据集,再导入到ListView1的过程,采用线程的方式,增加查询时的动画提示窗口。 2、新增加listview里图片的导入方式,支持从本机或者网络直接导入图片,线程异步方式实现。 3、新增更加简洁的引用item内的文字,图片和按钮的函数,原来的太长了。 4、新增加所有同一个模板下的item内同一个文本字段的统计功能,可以单独统计,也可以一次统计所有20个文本字段的各自的和。 5、新增上拉增加一组数据和下拉刷新的示例,修正与自带本地搜索冲突的问题,解决上滑与下滑的冲突问题。 6、新增加点击不同模板下的item内的不同控件的响应示例,item内的任何文本,图片等都可以成为一个按钮,点击后不但有动画效果,还可以执行你的任何代码。 3.5 forD10.1update2 2017-04-20更新说明: 1、新增可以让任何文本,自动根据文字内容进行变高,其下的控件自动向下调整,不会被覆盖。 2、新增可以让任何文本点击后展开,再点击后会收拢。 3、新增加另一种不带图片文件名的网址的下载图片的兼容。 4、修复导入同一张图片会异常的bug。 5、修复搜索框不可见时,程序出错的bug。 6、修复2处内存泄漏。 4.0 forD10.1update2 2017-04-21更新说明: 1、新增可以让任何文本,进行编辑,编辑后可以立即调整文本显示高度,及其它控件的位置。 2、解决要编辑的文本被输入法档住的难题。 3、解决编辑时与查询数据更新的冲突。 4、解决编辑时,可能对窗体其它按钮进行误操作的冲突。 5、解决编辑时,和横屏的冲突。 6、解决编辑时,编辑框的大小、位置和颜色尽量与原有文本一致。 4.5 forD10.1update2 2017-04-24更新说明: 1、新增可以设定从网上下载的图片的缓存目录名称,避免所有app使用同一目录的尴尬事情出现。 2、增加了删除缓存图片的调用示例。 5.0 forD10.1update2 2017-04-26更新说明: 1、新增在没有选择行的情况下,可以将当前行上下移动指定行数。 2、新增编辑text时,可以指定键盘类型:如编辑移动的行数时指定为数字键盘。 3、新增行选择功能,可以设置为单选或者多选,可以自己更换选择状态图片,可以执行全选(单选时无效),全不选或者反选(单选时无效)。 4、新增下拉列表编辑功能。 5、新增时间编辑功能。 6、新增日期编辑功能。 7、新增加图片的按比例显示的功能,如显示星级等等。 8、新增加删除指定的行。 9、新增加删除所有选定的行。 5.5 forD10.1update2 2017-05-05更新说明: 1、图片的个数也增加到20个了,原来是10个。 2、新增加行背景设置功能,您可以任意指定每一行的背景图。 3、下拉刷新与上拉加载更多增加释放步骤,不释放不会自动执行。 4、完善了form1的示例代码,一切以这个示例为准。
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/5 18:01:23
23楼:
5.5新版本的基本用法都在form1里面,请详细阅读 1、给listview填充数据的关键代码如下: 1.1以下是新版本的用法,您务必要把这里每一句都要看懂,注释掉的,都是可能有用的代码,查询数据库,这里采用的是我的3层的写法,您完全可以换成您自己的3层方式。 procedure TForm1.ListView1GetData; // 通用标准查询 var args: array [0 .. 2] of Variant; LItem: TListViewItem; rem: Variant; begin {$IF DEFINED(IOS) or DEFINED(ANDROID)} // if SJDM.SJGY.GetNetworkState = '0' then // begin // SJDM.SJGY.ToastConfirm('请打开网络连接', self, 1.5); // exit; // end; {$ENDIF} self.Focused := nil; ListViewImageCacheFolderName := 'GYlistviewDemoImageCache'; // 设置ListView导入图片时的缓存目录名称(防止不同app使用同一个文件夹) SetListView(ListView1, GY1ListItem); // 要用到的模板必须这样调用一下 SetListView(ListView1, GY2ListItem); // 要用到的模板必须这样调用一下 if ListView1.page = 1 then // 如果是第一页,清空内存图片缓存,这个前提是事先没有预存图片,否则不要删除程序预存图片 begin // 相当于重新加载数据 // ListView1.Images.Source.Clear; ListView1.ScrollViewPos := 0; ListView1.Items.Clear; InitializeItemCheck(ListView1, true); // 初始化设置Item的选择方式,单选false还是多选true,前提是您要先设置好模板内的GY1Image00,这个选择图标专用的 end; // 以下给客户端要上传给服务端的参数赋值 args[0] := ListView1.page; // 页码 // args[1] := form1.id; // 我的ID号 MyWaitShow('正在查询,请稍后......', self); TThread.CreateAnonymousThread( // 创建一个单线程,完成一个没有界面交互的任务 procedure var s, temps: string; begin // 线程里的一些代码。 sleep(300); // 代替下一句,模拟查询时间 // rem := DM.SQLOpen('GY_SimpleService1', '', 'cx_MyGroup', args, AkbmMemTable); //3层查询数据库 rem := '1'; // 临时模拟查询成功 if rem = '1' then // 如果查询成功 begin TThread.Synchronize(TThread.CurrentThread, procedure // 处理界面交互代码写这里 var i: Integer; h: Single; begin // if AkbmMemTable.RecordCount > 0 then //返回的数据集 if true then // 模拟代替上一行 begin ListView1.BeginUpdate; if ListView1.ItemCount > 0 then ListView1.Items.Delete(ListView1.ItemCount - 1); // 删除最后和统计条,添加完毕数据后再加 // for i := 1 to AkbmMemTable.RecordCount do for i := 1 to Edit1.Text.ToInteger do // 模拟代码 begin LItem := ListView1.Items.Add; // ListView1增加一行 GYListviewSetSetings(self, LItem, 'GY1', true); // 给新增加的这一行指定模板,参数的意思是,(本窗口,要指定模板的item,模板的前缀字符串,是否把模板中的控件值直接赋值到item对应的控件中) // 以下这一行,要放在其它文本赋值的前面 SetItemIsCheck(self, ListView1, LItem, false); // 设置item的默认为不选择,如果SetItemIsCheck(self,ListView1,LItem,true)就是默认选择 // SetItemBackGround(self,LItem,i mod 4);//设置行背景GY1Image00,(i mod 4)为其内的图片序号,从0开始 SetItemBackGround(self, LItem, i mod 2); // 设置行背景GY1Image00,(i mod 2)为其内的图片序号,从0开始 // 给每个字段赋值 GetText('01', LItem).Text := '总第' + inttostr(LItem.Index + 1) + '行:' + GetText('01', LItem).Text; GetText('02', LItem).Text := '第' + inttostr(i) + '行:' + GetText('02', LItem).Text; GetText('03', LItem).Text := FormatDateTime('hh:mm', Now); GetText('04', LItem).Text := inttostr(i); // 我们希望Text05是变高字符串 temps := '天舟一号货运飞船发射升空后,将进入高度约380公里的运行轨道,之后将与在轨运行的天宫二号空间实验室进行自动交会对接。天舟一号将装载超过6吨的物资与设备飞向太空。'; GetText('05', LItem).Text := temps.Substring(randomrange(0, temps.Length - 10)); // 取随机长度的字符串 h := SetTextHeight('05', LItem, true); // 重新指定该Text的高度和item的高度,返回值为item增加的高度,为true时自动调整其下面的控件的位置 GetText('06', LItem).Text := temps.Substring(randomrange(0, temps.Length - 10)); // 取随机长度的字符串 h := SetTextHeight('06', LItem, true); // 重新指定该Text的高度和item的高度,返回值为item增加的高度,为true时自动调整其下面的控件的位置 // 给每个图片赋值 {$IFDEF MSWINDOWS} // 电脑上,为了演示第一个从本地直接取图片 if i = 1 then GetBitmapFromFile('01', LItem, '..\..\图标\120x120.png', ListView1, 120) // 从本地直接取图片 else if i = 2 then // 如果是以下地址,要求第一个参数ver=3363302661800591360(等号右边的字符串)可以代表图片名称,如果链接无效,可能被删除了,会载入设计时模板的图片 GetBitmapFromFile('01', LItem, 'http://www.xuncha1688.com/app/imgshow?ver=3363302661800591360& #39;, ListView1, 120) else if i = 3 then // 可以重新指定图片边长为120(生成最大正方形图片) GetBitmapFromFile('01', LItem, 'http://p0.so.qhmsg.com/bdr/_240_/t018cfb77d38a88e67f.jpg& #39;, ListView1, 120) else if i = 4 then // http://p2.so.qhimgs1.com/bdr/_240_/t013373b1656886d572.jpg GetBitmapFromFile('01', LItem, 'http://p0.so.qhmsg.com/bdr/_240_/t018cfb77d38a88e67f.jpg& #39;, ListView1, 120) else if i = 5 then GetBitmapFromFile('01', LItem, 'http://p4.so.qhimgs1.com/bdr/_240_/t01ba74c571b127db8a.jpg& #39;, ListView1, 120) else if i = 6 then GetBitmapFromFile('01', LItem, '..\..\4.png', ListView1) // 从本地直接取图片 {$ELSE} // 手机上,全部从网络取图 if i = 1 then // 在线程中从网络直接取图片 //可以重新指定图片边长为120(生成最大正方形图片) GetBitmapFromFile('01', LItem, 'http://p1.so.qhimgs1.com/bdr/_240_/t01fe2b8ff433254341.jpg& #39;, ListView1, 120) else if i = 2 then // 如果是以下地址,要求第一个参数ver=3363302661800591360(等号右边的字符串)可以代表图片名称,如果链接无效,可能被删除了,会载入设计时模板的图片 GetBitmapFromFile('01', LItem, 'http://www.xuncha1688.com/app/imgshow?ver=3363302661800591360& #39;, ListView1, 120) else if i = 3 then GetBitmapFromFile('01', LItem, 'http://p0.so.qhmsg.com/bdr/_240_/t018cfb77d38a88e67f.jpg& #39;, ListView1, 120) else if i = 4 then GetBitmapFromFile('01', LItem, 'http://p2.so.qhimgs1.com/bdr/_240_/t013373b1656886d572.jpg& #39;, ListView1, 120) else if i = 5 then GetBitmapFromFile('01', LItem, 'http://p4.so.qhimgs1.com/bdr/_240_/t01ba74c571b127db8a.jpg& #39;, ListView1, 120) else if i = 6 then GetBitmapFromFile('01', LItem, 'http://p0.so.qhimgs1.com/bdr/_240_/t01f262d90a3a823ca0.jpg& #39;, ListView1, 120) {$ENDIF} else GetImage('01', LItem).ImageIndex := randomrange(0, 16); // 指定ListView1所绑定的ImageList1的图片序号,事先保存有图片的,没有的话,就不能这样设置了 GetImage('02', LItem).Bitmap := GY1Image02.Bitmap; SetImageRateNum(self, LItem, randomrange(1, 5), 5, '06'); // 设置GY1Image06的显示比例,randomrange(1, 5)是分子,5是分母。可以用来显示星级 // AkbmMemTable.next; end; LItem := ListView1.Items.Add; // ListView1增加一行 增加统计条 GYListviewSetSetings(self, LItem, 'GY2', true); // 用的是模板2 GetText('01', LItem).Text := 'GY1Text04合计:'; GetText('02', LItem).Text := GetAllTextSum(ListView1, 'GY1', '04'); // 只求一个字段的和,这样时间会少一点 // s := GetAllTextSum(ListView1, 'GY1'); // 一次返回所有20个字段的各自求和,一定要先赋值给变量,免得多次重复计算 // GetText('02', LItem).Text := NString('#', s, 4); // 取第4个字段,即所有模板为GY1的行内Text04的和 ListView1.EndUpdate; ListView1.CanLoadNextGroupData := true; // 标识本页数据加载完毕 MyWaithide(self); end else begin TThread.Synchronize(TThread.CurrentThread, procedure // 处理界面交互代码写这里 begin ListView1.CanLoadNextGroupData := false; // 到达最后一页了 MyWaithide(self); end); end; end); end else // 如果出错了 begin TThread.Synchronize(TThread.CurrentThread, procedure // 处理界面交互代码写这里 begin ListView1.CanLoadNextGroupData := true; // 标识数据可以重新加载 MyWaithide(self); ToastConfirm('查询失败,请稍后重试', self, 1); // rem会返回错误信息 end); end; end).Start; end; 2点击listview内的数据的关键代码如下 2.1下面是新用法,建议使用,注释已经很详细了,我就不啰嗦了 procedure TForm1.ListView1ItemClickEx(const Sender: TObject; ItemIndex: Integer; const [Ref] LocalClickPos: TPointF; const ItemObject: TListItemDrawable); var PicTempFile, s, moban: string; i, k, m: Integer; LItem, atempLItem: TListViewItem; begin if ListView1.EditMode = true then // 如果在编辑状态,则不执行点击事件 exit; LItem := TListViewItem(ListView1.Items.Item[ItemIndex]); moban := GetText('99', LItem).Text; // ---------- if moban = 'GY1' then // 如果用的是模板1,一个窗体最多10个模板 (先要判断模板,这样你才知道布局) begin if ItemObject <> nil then // 如果点击了item内的某个控件 begin if ItemObject.Name = 'I' then // 点击代表选择的这张图片,模板中由GY1Image00指定 begin ChangeItemCheck(self, LItem, ListView1); // 点击Image图片后,更改图片并返回当前行的check状态:LItem.HasSelected:=true如果为true表示选择了,为false表示没有选择 m := 0; // 以下求所有已经选择的Text04的和 for i := 0 to ListView1.ItemCount - 1 do begin atempLItem := TListViewItem(ListView1.Items.Item[i]); if atempLItem.HasSelected = true then // 表示选择了该行 m := m + GetText('04', atempLItem).Text.ToInteger; end; ToastConfirm('共选择' + ListView1.SelectedItemNum.ToString + '行,Text04的和:' + m.ToString, self, 1.5); exit; end; if ItemObject.Name = 'Image01' then // 点击第一张图片 begin ShowHitEffect(self, LItem, 2, ItemObject, $FFFF0000, 100); // 执行点击动态效果,带背景切换效果,不要的话用ShowHitEffect(ItemObject, $FFFF0000, 100); showmessage('图片地址(如果为空,表示导入的是在程序设计时就保存的图片):' + GetImage('01', LItem).TagString); // 自动导入图片后,图片地址保存在TagString exit; end; if ItemObject.Name = 'Image05' then // 点击第5张图片 begin ShowHitEffect(self, LItem, 2, ItemObject, $FFFF0000, 100); // 执行点击动态效果 if DeleteHuanCunPath(ListViewImageCacheFolderName) = true then showmessage('您清空了所有缓存的图片!不过没有关系,会自动再下载的。'); exit; end; if ItemObject.Name = 'Image06' then // 点击第6张图片 begin ShowHitEffect(self, LItem, 2, ItemObject, $FFFF0000, 100); // 执行点击动态效果 exit; end; if ItemObject.Name = 'Image07' then // 点击第7张图片 begin ShowHitEffect(self, LItem, 2, ItemObject, $FFFF0000, 100); // 执行点击动态效果 DeleteItem(ListView1, ItemIndex); // 删除当前行 ToastConfirm('第' + (ItemIndex + 1).ToString + '行删除完毕', self, 1.5); exit; end; if ItemObject.Name = 'Text01' then // 点击第2个文本 begin ShowHitEffect(self, LItem, 2, ItemObject, $FFFF0000, 100); // 执行点击动态效果 showmessage('您点击的内容是:' + GetText('01', LItem).Text); exit; end; if ItemObject.Name = 'Text02' then // 点击第2个文本 begin ClickToSelectText('02', LItem, ListView1, self, '自力更生,快乐创业,怨天尤人,消极厌世,无所事事,游手好闲'); // 调用TComboBox进入编辑状态 exit; end; if ItemObject.Name = 'Text03' then // 点击第3个文本 begin ClickToSelectTime('03', LItem, ListView1, self); // 调用TTimeEdit进入编辑状态 exit; end; if ItemObject.Name = 'Text07' then // 点击第7个文本 begin ClickToSelectDate('07', LItem, ListView1, self); // 调用DateEdit进入编辑状态 exit; end; if ItemObject.Name = 'Text05' then // 点击第5个文本 begin ClickToEditText('05', LItem, ListView1, self); // 进入编辑状态 exit; end; if ItemObject.Name = 'Text06' then // 点击第6个文本 begin ShowHitEffect(self, LItem, 2, ItemObject, $FFFF0000, 100); // 执行点击动态效果 ClickToLookMoreText('06', LItem); // 自动展开或者缩回高度 exit; end; if ItemObject.Name = 'Text10' then // 点击第10个文本 begin ClickToEditText('10', LItem, ListView1, self, TvirtualKeyboardType.NumberPad); // 进入编辑状态 exit; end; if ItemObject.Name = 'Text09' then // 点击第09个文本 begin ShowHitEffect(ItemObject, $FFFF0000, 100); MoveItem(self, ListView1, LItem, strtoint('-' + GetText('10', LItem).Text)); // 向上移动item exit; end; if ItemObject.Name = 'Text11' then // 点击第11个文本 begin ShowHitEffect(ItemObject, $FFFF0000, 100); MoveItem(self, ListView1, LItem, strtoint(GetText('10', LItem).Text)); // 向下移动item exit; end; end; showmessage('您点击的内容是除了图片1,文本1和文本2的别的地方'); // 点击了当前item的别的地方 // 写您要处理的事件 end; // ---------- if moban = 'GY2' then // 如果用的是模板2,一个窗体最多10个模板 (先要判断模板,这样你才知道布局) begin if ItemObject <> nil then // 如果点击了item内的某个控件 begin if ItemObject.Name = 'Image01' then // 点击第1张图片 begin ShowHitEffect(ItemObject, $FFFF0000, 100); showmessage('您删除了' + DeleteAllCheckedItem(ListView1).ToString + '行'); exit; end; if ItemObject.Name = 'Text01' then // 点击第1个文本 begin // 写您要处理的事件 exit; end; end; // 写您要处理的事件 end; // ---------- if moban = 'GY3' then // 如果用的是模板3,一个窗体最多10个模板 (先要判断模板,这样你才知道布局) begin if ItemObject <> nil then // 如果点击了item内的某个控件 begin if ItemObject.Name = 'Image01' then // 点击第1张图片 begin // 写您要处理的事件 exit; end; if ItemObject.Name = 'Text01' then // 点击第1个文本 begin // 写您要处理的事件 exit; end; end; // 写您要处理的事件 end; end; 3当窗体尺寸发生变化时,让listview显示的内容自己适应 procedure TForm1.FormResize(Sender: TObject); begin GYListviewFormResize(self, ListView1); // 当屏幕尺寸发生变化时,设置ListView的item的格式 end; 4让listview上拉加载一下页数据 procedure TForm1.ListView1ScrollViewChange(Sender: TObject); begin // 在这里判断滑动的位置,还要在ListView1MouseUp事件里调用执行代码 if CanGetNextGroupData(ListView1, '∧上拉加载更多信息') and (ListView1.CanLoadNextGroupData = true) and (IsEditing = false) then // 上拉到极限后自动加载下一组数据 ListView1.CanDoRefreshOrGetNextGroupData := 'Refresh' // 通知ListView1MouseUp事件可以执行 else if CanReFreshData(ListView1, '∨下拉刷新数据') and (ListView1.CanLoadNextGroupData = true) and (IsEditing = false) then // 下拉到极限后自动加载第一组数据 ListView1.CanDoRefreshOrGetNextGroupData := 'GetNextGroupData' // 通知ListView1MouseUp事件可以执行 else ListView1.CanDoRefreshOrGetNextGroupData := ''; // 通知ListView1MouseUp事件不可以执行 end; procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin if ListView1.CanDoRefreshOrGetNextGroupData = 'Refresh' then // 上拉到极限后自动加载下一组数据 begin ListView1.CanDoRefreshOrGetNextGroupData := ''; ListView1.CanLoadNextGroupData := false; // 防止重复执行加载 ListView1.page := ListView1.page + 1; // 分页的当前页 ListView1GetData;; // 加载下一组数据 end; if ListView1.CanDoRefreshOrGetNextGroupData = 'GetNextGroupData' then // 下拉到极限后自动加载第一组数据 begin ListView1.CanDoRefreshOrGetNextGroupData := ''; ListView1.CanLoadNextGroupData := false; // 防止重复执行加载 ListView1.page := 1; // 分页的当前页 ListView1GetData;; // 加载下一组数据 end; end; 5字段求和,有2种方式,请看看注释 LItem := ListView1.Items.Add; // ListView1增加一行 增加统计条 GYListviewSetSetings(self, LItem, 'GY2', True); // 用的是模板2 GetText('01', LItem).Text := 'GY1Text04合计:'; //GetText('02', LItem).Text := GetAllTextSum(ListView1, 'GY1', '04'); //只求一个字段的和 s:=GetAllTextSum(ListView1, 'GY1');//一次返回所有20个字段的各自求和,一定要先赋值给变量s,免得多次重复计算 GetText('02', LItem).Text :=NString('#', s, 4); //取第4个字段,即所有模板为GY1的行内Text04的和
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/7 17:22:36
24楼:
此帖子包含附件: 大小: 639.8K
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/7 17:23:02
25楼:
此帖子包含附件: 大小: 464.6K
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/7 17:23:23
26楼:
此帖子包含附件: 大小: 313.0K
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/7 17:23:51
27楼:
此帖子包含附件: 大小: 325.6K
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
2017/5/7 17:25:23
28楼:
20字段,可以左右滑动,下拉刷新,上拉加载下一页,可以选择多行,可以直接编辑,可以点击直接展开收拢一行。
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/