| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2704 人关注过本帖
标题:如何在同一表单中使用多个控件对同一表记录进行显示?
只看楼主 加入收藏
lfd_007
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-6-7
收藏
得分:0 

哈...我就是要的这个,十分感激,我会认真领会'代码精神'的.
虎哥的VFP的功力十分了得,在下心服,口服,佩服,佩服....另外多句嘴,能否在你的博客里看到更多的关于如何学习VFP的心得经验吗?我总觉得书本与实战之间总有一段距离,无法跨越,....幸好有你们这样的版主作桥渠,...庆幸,庆幸..
祝:中秋快乐...............:)

2006-10-06 15:26
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
哈哈,谢谢您的抬举。

在我的博客里,我讲了一个故事,"汤司令、老虎与狐狸",要学就学汤司令的精神,学VFP到了眼睛近视的程度。我的这个兄弟跟着我学VFP真的很苦。

找个时间,写点学习VFP的东西,一直是放在心里的一个想法,但是总是疏于动笔。看看吧。

中秋快乐!

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-10-06 16:35
lfd_007
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-6-7
收藏
得分:0 
对以上代码本人还有一点不明:
1,在哪里添加自定义变量.为什么我用Store 1to quit_xz时,提示没有nPapges.
2,在代码里,两个".."点是什么意思呀..起什么作用呀..
         谢谢...有没有解决这个问题上的细详说明..
2006-10-06 23:06
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
在表单上添加自定义变量,与在表单上添加自定义方法一样。而程序中的两个句号..中第一个用于宏替换(与&连用),第2个用于区别开控件的从属关系.

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-10-07 01:34
lfd_007
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-6-7
收藏
得分:0 
虎哥,实在有点开不了口了....对以上9楼的代码还是看不太懂..能不能说一说这个程序的运行过程呀
我主要是'SKIP (THISFORM.nPages-1)*6+nCnt-1'不太明白是什么意思...按理后应该是个数值的,表示跳到记录几,可是'Thisform.npages-1'是什么意思呢?变量nPagesr 的初值是1,就后不就成了'Thisform.0'了吗?这是个控件呀,还是别的什么意思....这句运行时出错说'无效的下标引用',怎么回事呀...
另外抓图后的文件在哪呀....谢谢
2006-10-07 06:45
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 

9楼程序的运行过程

(1)首先运行表单初始化过程THISFORM.INIT()。这里做3件事情:一是关闭所有数据文件,二是打开题库文件TIKU.DBF,三是运行THISFORM.REF()自定义过程

(2)在运行THISFORM.REF()自定义过程的时候,由于要同时将6组题显示在表单上,因此设置循环语句(循环6次)。将循环变量nCnt由数值型改写为字符型cCnt以便实现宏替换;将记录指针指向第THISFORM.nPages页的第nCnt条记录,本来这个记录如果存在的话,使用GO (THISFORM.nPages-1)*6+nCnt就可以了,但是若该记录不存在则该语句会产生错误,故改用GO TOP以后SKIP相应位置,如我想将记录指针指向第2条记录,则直接使用'GO 2'就可以了,但'GO TOP'以后,'SKIP 1'也能达到相应记录位置,而且记录指针超过总记录数的话,也仅仅是EOF()为真而已,不会产生错误;随后就是当EOF()为真时,隐藏以后的标签和选项组,而当EOF()不为真时,正常显示这些控件及其属性。

(3)用户可以在任意时候按'下一个'命令按钮,则该命令按钮的click里面的代码被运行。既然是要求显示下一页,则应当修改页号('THISFORM.nPages=...'这个语句)和显示新的一页的内容('THISFORM.REF'这个语句)。我将'下一页'做成循环的按钮,若有下一页的话,则正常修改nPages的值,使之增加1,若不存在下一页,则回到第1页。其中nTotalPages计算总页数


感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-10-07 23:24
lfd_007
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-6-7
收藏
得分:0 
nTotalPages=IIF(RECCOUNT()=0,0,INT((RECCOUNT()-1)/6)+1)
THISFORM.nPages=IIF(THISFORM.nPages>=nTotalPages,1,THISFORM.nPages+1)
THISFORM.REF
THISFORM.REF
虎哥,对以上内容还是不太明白.主要是IIF()的使用,它是什么用的呀,书上只是说返回逻辑表达式两个值中的一个,怎么用不太清楚.另外关于自定义变量nPages是不是就可以认为它只是Thisformr的一个方法呢?能否请虎哥对以上代码进行一下详细的说明...谢谢
2006-10-08 21:34
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
nPages是我添加在表单中的一个变量,因此它与表单中其他变量(应该叫属性)一样使用,比如THISFORM.WIDTH表是本表单的宽度,而THISFORM.nPages则表是本表单的nPages值(它的含义只有用户知道,表单本身不对它赋予别的特定含义)。其实,不用这么麻烦的,你可以不用在表单中新建一个属性,而仅仅在初始化部分对nPages进行定义就可以了(PUBLIC nPages).

至于IIF就更简单了。由于在"下一个"命令按钮的CLICK过程里面,我要求程序计算总页数nTotalPages,并实现当前页号nPages的修改,而修改该当前页号的规则是:(1)正常情况下,当前页号增加1;(2)当页号为最后一页的时候,我要求回到第1页,因此语句THISFORM.nPages=IIF(THISFORM.nPages>=nTotalPages,1,THISFORM.nPages+1)就是用来实现这个设计思路的。即当当前页号(THISFORM.nPages)大于或等于总页数(nTotalPages)的时候,取1;否则正常增加1(THISFORM.nPages+1).它实际上就相当于下面的程序
IF THISFORM.nPages>=nTotalPages
THISFORM.nPages=1
ELSE
THISFORM.nPages=THISFORM.nPages+1
ENDIF

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-10-10 01:49
lfd_007
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-6-7
收藏
得分:0 

谢谢虎哥,为什么你不早说.我花了两天才搞懂,不过我又学会了许多东西,严重感谢!!!!!!!!

2006-10-11 19:50
快速回复:如何在同一表单中使用多个控件对同一表记录进行显示?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017945 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved