vfp表格列排序问题

sun8330 2011-04-04 06:40:45
vfp表单中的grid表格,如何用一个程序,一次将每一列的header加一个click程序,让用户点击header后,按列排序?是否可以用bindevent来实现,请各位将源码提供,谢谢!
...全文
593 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xioahu8028 2011-10-07
  • 打赏
  • 举报
回复
我在vfp的加入,老是提示myclick找不到,不知道为什么,能否指点一下?
我就加在form的int事件中,在给表单指定数据源的后面。
sun8330 2011-10-07
  • 打赏
  • 举报
回复
form表单要加一个myclick方法程序,否则就会找不到
sun8330 2011-04-08
  • 打赏
  • 举报
回复
搞定了,谢谢taohua300和trainee两位,你们两位的方法我测试了,都可以通过,以前不知道这个的时候,每个column都去搞个程序,太麻烦了,现在一次搞定,省了不少事,谢谢了
taohua300 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jxjdzwang5555 的回复:]
学习中:第一次听说BINDEVENT( ) 函数。
我的想法是在click事件中,加set order to 列 后,thisform.refresh是否可以?
[/Quote]

第一次可以,然后就不行了。

豆三老师说过一种方法,就是在每个列表头的click事件中写上代码,但这样做的结果是当再一次重新指定表格数据源的时候,click事件就会丢失,所以在再次指定数据源之前,先指定表格控件的数据源为空(thisform.grid1.recordsource = ''),但在我测试的时候没有成功,不知道是不是因为我的问题。你有兴趣的话,可以测试一下
jxjdzwang5555 2011-04-06
  • 打赏
  • 举报
回复
学习中:第一次听说BINDEVENT( ) 函数。
我的想法是在click事件中,加set order to 列 后,thisform.refresh是否可以?
jxjdzwang5555 2011-04-06
  • 打赏
  • 举报
回复
谢谢老师的指教。我有时间的情况下,就试试。
不过老师有这个情况,我就没有必要试了,应该是一样的。原因确实复杂,为什么第二次会丢失,vfp或计算机的情况就是这样,说不清、道不明。
为了经常温习vfp,我有时间的话,还是试试。(但感觉自己现在没有了工作的压力和学习的动力了)
taohua300 2011-04-05
  • 打赏
  • 举报
回复
给grid1指定完数据源的时候,加上

For Each LoColobj In Thisform.container1.grid1.Columns
Bindevent(LoColobj.Controls(1),"click",Thisform,"myClick")
Endfor


然后给表单加一个自定义方法,该方法就是用来给数据源排序的
然后点击表头的时候就可以排序了
xilaianzxsc 2011-04-05
  • 打赏
  • 举报
回复
这个,我也需要用的
taohua300 2011-04-05
  • 打赏
  • 举报
回复
下面是我程序提取的一部分

For Each LoColobj In Thisform.container1.grid1.Columns &&我使用了容器控件
Bindevent(LoColobj.Controls(1),"click",Thisform,"myClick") &&myclick是自定义的方法,用来排序的
Endfor

myclick 方法

LOCAl array laEvEnts[1]
AEVENTS(laEvEnts,0)
obj_name = laEvEnts[1,1]
headername = obj_name.caption&&headername 为表格绑定的数据源的字段名,以此为依据排序
。。。。。。。。。。。。。。。。。。


&& 因为我是从sql获取数据,所以每次点击表头的时候都从sql按条件查询一次,生成临时表作为表格的数据源,省略号部分你可以写自己的排序方法
trainee 2011-04-05
  • 打赏
  • 举报
回复
myclick不要设参数
在myclick中,用sys(1270)引用所点击的对象
sun8330 2011-04-05
  • 打赏
  • 举报
回复
谢谢,可是有个问题,排序必须要一个数据源作为参数,才能知道是按哪个栏位排序,我把程序改为这样:
for Each LoColobj In Thisform.container1.grid1.Columns
Bindevent(LoColobj.Controls(1),"click",Thisform,"myClick(locolobj.ControlSource)")
Endfor

结果出现 property is not found
请 再次指点一下,如果myclick有参数,且参数是locolobj.controlsource时,如果写中间这行程序?
介绍数据类型   表中的每一个字段由于其数据代表的意义的不同,因而都有特定的数据类型,例如:编号、姓名、出生年月三个字段的类型是各不相同的,在Visual FoxPro中,分别是用数值型(或整型)、字符型、日期型来表示的。熟悉各种数据类型可以帮助我们更快更好地对表进行操作。Visual FoxPro 6.0 表中的数据类型及简单的说明如下: 字符型:用于包含字母、汉字、数字型文本、符号、标点等一种或几种的字段,其中的数字一般不是用来进行数学计算的,如电话号码、姓名、地址。 货币型:货币单位,最多可有四位小数,如果小数部分超过四位则将通过四舍五入只保留四位,如商品价格。 数值型:整数或小数。如:成绩、年龄、 订货数量。如果有小数,需要指定小数位数,小数点包含在字段宽度中,占一个字节。它还支持十六进制数值。 浮点型:同数值型。 整 型:不带小数点的数值。 日期型:用来存放日期数值,Visual FoxPro 6.0(5.0)支持2000年型的日期数值。格式为:月/日/年。如:04/28/97。其中的年份如果输入97,则系统默认为1997,将光标条移到表中该字段时就会显示“04/28/1997”,如果输入小于48的数(如45)则系统默认为2045,因此,最好输入完整的年份。 日期时间型:格式为:月/日/年 时:分:秒 AM或PM。如:04/28/97 06:26:00 AM。 双精度型:双精度数值,如实验所要求的高精度数据。 逻辑型:当存储的数据只有两种可能时使用,用True(.T.)和False(.F.)表示。如:是否结婚。 备注型:又称内存型,它的长度随输入数据的长度而定,它的存储和表中其他数据是分开的,存放在扩展名为.FPT的文件中。 通用型:可以链接或嵌入OLE对象,如由其他应用程序创建的电子表格、WORD文档、图片。当链接OLE对象时,表中只包含指向数据的链接和创建OLE对象的应用程序的链接;当嵌入OLE对象时,表中包含OLE对象复件及指向创建此OLE对象应用程序的链接。 另外还有字符型(二进制)和备注型(二进制):前者同“字符型”相同,但是当代码页更改时字符值不变;后者同“备注型”相同,但是当代码页更改时备注不变。本课程中不涉及这两种类型,这里不做介绍。  1.2 使用“表设计器”创建表 使用“表设计器”可以方便、直接地创建表,我们既可以通过“项目管理器”的“数据”选项卡使用“表设计器”创建;也可以从“文件”菜单中使用“表设计器”创建。前一种方法在以后创建“项目管理器”时再介绍,这里仅介绍从“文件”菜单中创建表。  1.2.1 创建表结构 操作步骤:  从“文件”菜单中选择“新建”。出现如下对话框: 在复选框中选取“表”。  2、选取“新建文件”按钮,在“输入表名”中输入我们要建的表名,例如“职工表”,选取“保存”按钮。即出现表设计器:  这里有三个选项卡:“字段”、“索引”和“表”,默认的是“字段”选项卡。  3、从第一行开始依次输入(或选择): 在“字段名”选项卡中键入字段名。 在“类型”区域中,选择表中的某一字段类型。注意,字段的数据类型应与将要存储在其中的信息类型相匹配 在“宽度”中,设置以字符为单位的宽,使字段的宽度足够容纳将要显示的信息内容。注意,一个汉字需占两个字符。 如果“类型”是“数值型”或“浮点型”,请设置“小数位数”框中的小数点位数。 如果希望为字段添加索引,就在“索引”中选择一种排序方式。 如果想让字段接受 null 值,选中“NULL”。NULL无明确的值,它不等同于零或空格。一个 NULL 值不能认为比某个值(包括另一个 NULL 值)大或小,相等或不同。 字段名前的双向箭头表明是当前行。一行各项目之间用Tab键移动。  4、表的结构设置完毕后, 选取“确定”按钮,这时会出现一个选择框,询问“现在输入数据吗?”。此时,可以选择是立即开始输入记录,还是在以后准备好所有记录后再打开表进行输入。   1.2.2 在表中添加记录 1、在“文件”菜单中选择“打开”。  2、从“搜寻”下拉框中选择文件所在目录,从“文件类型”下拉框中选择“表”,即出现该目录下所有的表。如下图:  3、选择“职工表.dbf”,点取确定按钮。 4、从“显示”菜单“中选择“浏览”。如图:  5、这时出现“职工表”浏览窗口,并且“显示”菜单的内容发生变化,如下图,选择“追加方式”。  6、在“浏览”窗口中输入新的记录。当输入内容满一个字段时,光标会自动跳到下一个字段。内容不满时,用Tab键或回车键将光标移到下一字段。 7、当编辑备注型(memo)字段时,将光标条移到memo上,双击它或按Ctrl+Home键就可进入memo字段的输入窗口进行输入、修改。完成后,单击窗口上的关闭按钮“X”或按Ctrl+w可以保存并关闭窗口。如不想保存,则按Esc键或Ctrl +Q。  8、进入通用型(gen)字段与备注型方法相同。进入编辑窗口后,打开“编辑”菜单,选择“插入对象”进入插入对象窗口。选择“新建”可以创建多种格式的图象。我们选择“由文件创建”,在“文件”框中输入插入对象的文件名,包括路径。   如果选择“链接”则只存储该图象的链接,而不把整个图象包括进通用型字段中。如果选择“显示为图标”则可以用图标表示插入的图象对象。这里我们两者都不选择。   按“确定”按钮,即完成照片的插入。  9、为方便输入,也可以从“显示”菜单中选择“编辑”来切换到“编辑”方式。在“编辑”方式下,名显示在窗口的左边。   这样,一个表就创建完成了。这个表称为自由表。之所以称它自由表,是指它是孤立存在的,和其他表没有发生联系,既不能控制其他表,也不被其他表控制。它独立存在于任何数据库之外。   还可以在 Visual FoxPro 中创建另一种表--数据库表,它是数据库的一部分。我们将在数据库一课中讲到。 1.3 使用“表向导”创建表   创建新表还可以借助于“表向导”。利用“表向导”,可以随时创建新表。向导会提出一系问题,并根据回答建立一个表。这里只把步骤说一下,不详细介绍了。 步骤: 从“文件”菜单中选择“新建”。 选择“表”。 选择“表向导”按钮。如本节图一所示。 按照向导屏幕的指示进行操作。 也可以用其他方法使用“表向导”,例如:在“项目管理器”中使用。 返回 下一节 电脑报首页 网络学院首页
Grid++Report是一款C/S与B/S集成报表工具,功能全面易学易用。C/S开发适用于VB.NET,C#,VB,VC,Delphi,BCB,VFP,易语言等。B/S开发适用于ASP.NET,ASP,PHP,JSP等,支持所有WEB服务器。 Grid++Report6.0版主要新增功能 ★引擎方面 1、增加了一个自由表格部件,可以灵活定义各种自由表格,具有单元格合并功能。 2、部件框增加边距设置,边框增加内层与阴影,虚线边框。 3、文字显示增加段间距、首字缩进与两端分散对齐。 4、分组报表可以按某个统计值的大小对分组项进行排序 5、数据源除了OLE DB外,增加XML、JSON与普通文本数据。 6、在编程接口中增加了很多应用函数,如数据压缩、数字格式化、日期时间解析与格式化、打印机与纸型枚举、文件选择对话框等。 7、其它杂项功能,根据多年收集的用户需求来增加与改进功能,如分组相关系统变量、图像旋转显示等。 ★设计器: 1、设计面板具有缩放设计功能。 2、将关联属性归类为组,方便在设计时集中设置与查看。 3、对象浏览窗口与属性窗口可以隐藏,方便在设计很宽的报表时增大设计面板的区域。 4、设计面板大小跟随明细网格总宽来改变宽度,方便设计大宽度明细网格报表。 5、部件框锁定功能,被锁定的部件框不允许进行可视化拖放。 6、自动在分组头尾中增加统计框,默认为合计函数,并设置相应的对齐。 7、数据源连接串可以为 XML 或 JSON 数据源,且可以自动生成字段。设计报表时数据源可连接的类型有:各种数据库、XML或JSON文件、产生XML或JSON的网络URL、EXCEL文件、TEXT文件。 8、设计器增加数据提供事件接口,在设计报表时可以用给报表加载自定义数据源。 ★打印与打印预览: 1、横向分页时,在数据不多的情况下,分页直接显示在本页,而不是在下一页。 2、在模板中可以保存默认打印机名称。 3、分组尾支持每页重复打印。 4、如果部件框跨页多次显示了,在新页中再次输出其上下边框。 5、提供编程接口枚举出Windows系统中安装的打印机,以及指定打印机支持的所有纸张类型。 ★查询显示: 1、没有明细网格的报表,背景图可以显示出来。 2、明细数据不多时,表格不会显示下部空白。 ★数据导出: 1、在导出Excel时,能用代码设置页边距等参数 2、在运行时对外观属性的改变可以反映到Excel导出。 ★图表: 1、重新设计图表接口,让图表可视化设计与编程控制更清晰简单。 2、支持更多图表类型,如百分比柱状图、垂直排的柱图。 3、一个图表中可以混和显示多种不同类型的图形,如一个序为柱图,另一个序为曲线图。 4、Y轴可以显示双坐标轴,方便实现双轴柱状图等。 5、图例可以在下方显示,可以多栏显示。 6、增加图表数据记录集,图表数据直接从记录集或XML数据源加载,而不需用代码来加载图表数据。 7、图表方面还有很多细节方面的改进与增强,加强图表功能是本新版本的重要方面。 ★交叉表 1、多数据交叉表可以将同一产生的交叉在一起。 2、在合计中可以排除掉一些不进行合计。 3、纵向交叉项目中可以定义统计框或综合文字框表达式,在合计中关联的字段自动求和,在项目中关联字段为复制首笔值。 ★子报表: 1、子报表无数据可以自动隐藏。

2,726

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧