注册 登录
编程论坛 VFP论坛

表格控件滚动条绑定的问题

zhr822 发布于 2020-10-26 20:52, 2819 次点击
求教各位老师,我表单上的一个表格控件,显示多列内容,每次点击表单上的命令按钮会增加一些数据,数据增加,列数也增加,如何绑定左右的滚动条自动到右边,显示后面的数据?
15 回复
#2
sdta2020-10-26 21:16
了解表格控件的属性、方法、事件
#3
吹水佬2020-10-27 09:29
试试:
GO命令指定表记录号
GRID的SetFocus方法获取焦点
GRID的ActivateCell方法激活一个单元格
#4
zhr8222020-10-27 20:19
回复 3楼 吹水佬
老师,我的问题是这样,我在表单上做了一个表格如下,我用time控件设置每秒更新一下比赛数据,表格只能显示18列的内容。当到了19列的时候就显示不出数据了,滚动条不跟着向右走,我想把滚动条绑定的右边,也就是当19列数据出现的时候,屏幕显示2列~19列的内容,当20列数据出现的时候,屏幕显示3列~20列的内容........,你看应该怎么写代码。
只有本站会员才能查看附件,请 登录

我之前用列表框这样写代码:thisform.list1.ListItemId = thisform.list1.ListCount,也就是滚动条和新出来数据是绑定的,但是换成表格就不知道怎么写了,找不到表达方式。
#5
schtg2020-10-28 04:57
回复 4楼 zhr822
可否给定一个显示条件:当字段数超过18个时,比如19个就取其2~19字段显示;字段数增加到20个时就取其3~20字段显示,依次类推,不知道是否符合你的意思,仅供参考哈。
#6
zhr8222020-10-28 09:02
回复 5楼 schtg
符合我的意思,但是这个语句要怎么表达,我的数据时一列一列从左到右存放的,最好是滚动条绑定到数据列的最右端,这样不管显示多少列,都能看到最后面的数据。
#7
吹水佬2020-10-28 09:42
回复 6楼 zhr822
固定18列,变动每列column的ControlSource
#8
厨师王德榜2020-10-28 10:16
用 Grid.DoScroll(5 或 7) 方法,看行不行.
#9
吹水佬2020-10-28 11:46
试试用ActivateCell到最后一列,VFP9测试可以
只有本站会员才能查看附件,请 登录

程序代码:
CREATE CURSOR tt (f1 I DEFAULT 1)
APPEND BLANK
FOR i=2 TO 20
     ALTER TABLE tt ADD COLUMN  ("f"+TRANSFORM(i)) I
ENDFOR
of = CREATEOBJECT("form1")
of.show(1)
RETURN

DEFINE CLASS form1 as Form
    ADD OBJECT cmd1 as commandbutton WITH left=10,top=10,height=22
    ADD OBJECT grid1 as grid WITH left=10,top=40
    PROCEDURE cmd1.click
        thisform.grid1.setfocus
        thisform.grid1.ActivateCell(1,FCOUNT("tt"))
    ENDPROC
ENDDEFINE
#10
zhr8222020-10-28 12:31
回复 8楼 厨师王德榜
thisform.Grid1.DoScroll(7) 很好用,完全解决了问题。顺便问一句,这个括号里的5或7是啥意思?像这类问题不请教论坛高人,自己在家摸索很久也找不到方法。
谢谢老师给予的指点,我会记住你给予的帮助,我要大吼一声“太好了!”
#11
zhr8222020-10-28 12:33
回复 9楼 吹水佬
非常感谢老师的指点,我需要慢慢来消化一下
#12
zhr8222020-10-28 16:34
回复 9楼 吹水佬
很不错,我把程序代码复制过来试了下,可以解决问题。多谢老师的鼎力相助,让我又学到了新的知识。
#13
zhr8222020-10-28 18:50
回复 8楼 厨师王德榜
老师,我找到了滚动具体的代号意义
只有本站会员才能查看附件,请 登录

用DoScroll(5)时,滚动了二列就不滚了,
用DoScroll(7)时,可以翻页滚动,也就是说,原来显示10列内容,现在可以自动翻一页滚动到20列,当20列显示完了,再有新数据,就不能继续翻页滚动了。
#14
吹水佬2020-10-28 19:03
回复 12楼 zhr822
这个方法也有问题的,要看具体是怎样变动栏目的
#15
吹水佬2020-10-28 19:18
以下是引用zhr822在2020-10-28 18:50:04的发言:

老师,我找到了滚动具体的代号意义
用DoScroll(5)时,滚动了二列就不滚了,
用DoScroll(7)时,可以翻页滚动,也就是说,原来显示10列内容,现在可以自动翻一页滚动到20列,当20列显示完了,再有新数据,就不能继续翻页滚动了。

试试这样用:
        thisform.grid1.setfocus
        thisform.grid1.DoScroll(5)
        thisform.grid1.SetFocus
        thisform.grid1.ActivateCell(thisform.grid1.ActiveRow, 1)
#16
zhr8222020-10-28 20:58
回复 15楼 吹水佬
老师,非常谢谢,我试了一下,只要把及时更新的,表里的行号、列号放进来就行了。
只要这二句:
thisform.grid1.SetFocus
thisform.grid1.ActivateCell(nRow, nCol)
1