表格内做进度条

zou_he 2018-05-08 10:37:32
现在需要在表格内某列做一进度条,将表格列TEXT删除后,加入进度条控件,象原来加CHECKBOX控件一样,将列FORMAT属性设为.T.,SPARSE属性设为.F.,只有在活动的当前记录行显示出进度条,不会象加CHECKBOX一样,全部显示该控件。
并且该进度条控件VALUE能不能象CHECKBOX一样,反应出当前记录的值?请版主有空指教一下,谢谢。

THISFORM.GRID1.RecordSource=NULL
=SQLEXEC(main_nhandle,"select * from t_temp","temp2_cx")
SELECT temp2_cx
thisform.grid1.RecordSource="temp2_cx"
thisform.grid1.column1.ControlSource="temp2_cx.fwcjd"
thisform.grid1.column2.ControlSource="temp2_cx.fwcjd"

得到的结果如下图:



CHECKBOX的效果就是OK的。

每列都显示控件,并且准确反应出当列值,0或1
...全文
1751 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyxfp 2018-05-12
  • 打赏
  • 举报
回复 1
此程序是我收藏的,非我原创,原作者的无私奉献,在此表示敬意!
zou_he 2018-05-11
  • 打赏
  • 举报
回复
先这样用着了,谢谢4#楼。
trainee 2018-05-11
  • 打赏
  • 举报
回复
4楼文章貌似我的原创
zou_he 2018-05-10
  • 打赏
  • 举报
回复
#4你好,感谢回复。 下了你的文件,试运行了,应该就是这个效果,但有几个问题。 1、MS的ProgressBar 能不能实现,一定要用你的test1.vcx才能实现吗,为何MS的ProgressBar 在列属性SPARSE为.F.时,仍然只在活动的单元格显示进度条控件,而不是全部记录都显示? 2、请问你的这个cbar如何放到表格列?拖曳的方法会提示错误,“不能在表格控件中添加此结象” 3、你所说的backstyle_access方法程序,这个应该不是控件所自带方法程序的,请问,你是如何在标准控件中添加自定义方法程序? 请指教,谢谢。
mywisdom88 2018-05-10
  • 打赏
  • 举报
回复
找不到楼上说的 ,能把上图的列子放上去下载不.
jyxfp 2018-05-10
  • 打赏
  • 举报
回复
在vfp中,控件的每个属性都有access和assign方法,即在属性的读取和赋值过程中嵌入代码。如属性backstyle建立access方法(方法名为backstyle_access),此方法会在读取backstyle属性时(如?backstyle时)执行。

grid控件的列column默认包含textbox控件,可以替换为其他控件(如lable,image或自定义class)。然而在列数据绑定时,官方的绑定方法只有controlsource,它只能将字段内容赋值于textbox的value属性中,如果列包含的不是textbox控件,如label, image,这些列内容也无法和字段绑定起来。

直到有一天,有人发现了backstyle_access的妙用,既只要在列所包含的控件中建立backstyle_access方法,grid中的单元显示包括动态显示(如记录上下移动,resize事件等),都会执行backstyle_access方法。所以只要在backstyle_access方法加入控件的赋值语句,即可轻松完成列内容和字段的绑定,此方法也可轻松模拟各种列动态dynamicXXX属性。

其他属性的access方法(如backcolor_access等)都不具备此功能,惟独backstyle_access有此特异功能,所以真的要感谢发现之人。

有了这个方法,grid就不再是个古板的表格,剩下的就靠你的想象力吧。

如图:

都市夜猫 2018-05-10
  • 打赏
  • 举报
回复
引用 4 楼 jyxfp 的回复:
其他属性的access方法(如backcolor_access等)都不具备此功能,惟独backstyle_access有此特异功能。
其实未必如你所说,也有其他属性有此特性,像容器控件的 BorderWidth,SpecialEffect,Style 都跟 BackStyle 一样。 可能仅仅是因为多数控件都有 BackStyle 而选用了它的 access 方法而已。
zou_he 2018-05-09
  • 打赏
  • 举报
回复
进度条能显示值是因为在Grid的init加了thisform.grid1.column1.olecontrol1.vαlue=t_temp2.Fwcjd,否则根本不显示值。
zou_he 2018-05-09
  • 打赏
  • 举报
回复
进度条能显示值是因为在Grid的init加了this.vαlue=t_temp2.Fcwjd,否则根本不显示值。
zou_he 2018-05-08
  • 打赏
  • 举报
回复
每条记录进度条的进度都是一样的,并且不同时出现。。。

2,733

社区成员

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

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