| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2544 人关注过本帖
标题:Grid里的text1中keypress事件无效?
只看楼主 加入收藏
nioyu
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2015-9-18
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:16 
Grid里的text1中keypress事件无效?
vfp9.0 form中没有用数据环境,数据环境总是出一些莫名其妙的问题。Grid绑定了一个表,在form的init事件里又定义了grid的数据源,是同一个表。
sele 1
use data\ztml exclusive
INDEX on id1 TO idx1
go top
if eof()
  
*   
  
  
endif


thisform.grid1.recordsource='ztml'
thisform.grid1.recordsourcetype=1
thisform.grid1.column3.text1.AutoComplete= 1
thisform.grid1.column3.text1.AutoCompTable= 'data\hhcomp'
thisform.grid1.column4.text1.AutoComplete= 1
thisform.grid1.column4.text1.AutoCompTable= 'data\ggcomp'
thisform.refresh
thisform.grid1.setfocus
现在需要在column2.text1 的keypress事件里添加功能,但是无响应,keypress里测试最简单的 wait wind this.value,无任何反应。
不过如果不在form init事件里重定义grid的数据源,则keypress里的代码可以响应。
请问怎么能够在重定义grid数据源后,text的keypress也可以响应?谢谢
搜索更多相关主题的帖子: 数据源 
2015-09-24 08:07
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10565
专家分:43004
注 册:2014-5-20
收藏
得分:5 
用 MESSAGEBOX(this.value)
2015-09-24 08:15
nioyu
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2015-9-18
收藏
得分:0 
谢谢版主。现在问题的关键是keypress事件不响应,就是说不执行这个事件里的代码。
2015-09-24 08:19
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10565
专家分:43004
注 册:2014-5-20
收藏
得分:0 
将 MESSAGEBOX(this.value) 放在keypress事件里试,我测试有响应的哦。
2015-09-24 08:21
nioyu
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2015-9-18
收藏
得分:0 
在form的activate事件里重定义grid数据源就不行了
thisform.grid1.recordsource='ztml'
 thisform.grid1.recordsourcetype=1
2015-09-24 08:55
nioyu
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2015-9-18
收藏
得分:0 
把这个
sele 1
 use data\ztml exclusive

改成
sele ztml
就可以响应了。
真是奇怪。
还是谢谢版主!
2015-09-24 09:11
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10565
专家分:43004
注 册:2014-5-20
收藏
得分:0 
use data\ztml exclusive 就是关闭当前表再打开表,之前的数据源关闭了,GRID重新初始化了,当然原来的事件过程代码也没了。
确有需要这种情况,只有动态创建GRID,重新定义GRID相关属性和事件代码。也可以封装一个GRID类,动态创建引用。
2015-09-24 09:25
nioyu
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2015-9-18
收藏
得分:0 
动态创建grid后,事件代码怎么加进去?有相关资料吗?
2015-09-24 09:32
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10565
专家分:43004
注 册:2014-5-20
收藏
得分:0 
回复 8楼 nioyu
写个简单示例:
程序代码:
** Test.prg
of = CREATEOBJECT("Form1")
of.show(1)
RETURN


DEFINE CLASS Form1 As Form
    ADD OBJECT Command1 AS CommandButton WITH top=10,left=10,height=25,caption="切换表"
    
    PROCEDURE Init
         ENDPROC
    
    PROCEDURE Command1.Click
        USE 
        IF VARTYPE(thisform.Grid1) == "O"
            thisform.RemoveObject("Grid1")
        ENDIF
        thisform.AddObject("Grid1", "_Grid")
        thisform.Grid1.Top = 40
        thisform.Grid1.Left = 10
        IF EMPTY(this.Tag)
            this.Tag = "1"
                * 相当于 use 表1
            CREATE CURSOR 表1 (f1 I, f2 I, f3 I)
            INSERT INTO 表1 VALUES (1, 2, 3)
            INSERT INTO 表1 VALUES (4, 5, 6)
            GO TOP 
            thisform.Grid1.RecordSource = "表1"
        ELSE
            this.Tag = ""
                * 相当于 use 表2
            CREATE CURSOR 表2 (f1 I, f2 I, f3 I)
            INSERT INTO 表2 VALUES (4, 5, 6)
            INSERT INTO 表2 VALUES (7, 8, 9)
            GO TOP 
            thisform.Grid1.RecordSource = "表2"
        ENDIF
    ENDPROC
ENDDEFINE


DEFINE CLASS _Grid AS Grid
    Visible = .T.
    ColumnCount = 3
    RecordSourceType=1

    PROCEDURE Init
        this.Column1.RemoveObject("Text1")
        this.Column1.AddObject("Text1", "_TextBox")
    ENDPROC
ENDDEFINE


DEFINE CLASS _TextBox AS TextBox
    Visible = .T.

    PROCEDURE KeyPress(nKeyCode, nShiftAltCtrl)
        MESSAGEBOX(this.value)
    ENDPROC

    PROCEDURE Click
        MESSAGEBOX(this.value)
    ENDPROC
ENDDEFINE
2015-09-24 10:49
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10565
专家分:43004
注 册:2014-5-20
收藏
得分:0 
如果不想封装GRID类,也可以自定义方法用BINDEVENT()绑定,详细参考VFP帮助。
2015-09-24 10:52
快速回复:Grid里的text1中keypress事件无效?
数据加载中...
 
   



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

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