vfp表格列排序问题

sun8330 2011-04-04 06:40:45
vfp表单中的grid表格,如何用一个程序,一次将每一列的header加一个click程序,让用户点击header后,按列排序?是否可以用bindevent来实现,请各位将源码提供,谢谢!
...全文
645 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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时,如果写中间这行程序?

2,748

社区成员

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

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