| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1401 人关注过本帖
标题:{求助}表格(gird)中的文本框(text)触发事件问题?
只看楼主 加入收藏
fox3501
Rank: 1
等 级:新手上路
帖 子:50
专家分:7
注 册:2015-1-13
收藏
得分:0 
以下是引用吹水佬在2015-2-3 20:09:03的发言:

动态编程,还是觉得自己封装一个GRID类好用点,用AddObject和RemoveObject方法就可以。

老师能给个例子,好好学习封装一个GRID类及AddObject和RemoveObject方法,顺便解决自己的难题。谢谢。
2015-02-04 08:58
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:2 
对你上传的表单简间修改了一下,解决你那触发事件问题。
建议:
1。对grid,创建了它后不要重复对它初始化(如反复对它绑定数据表),对它绑定的数据表不要反复闭,再打开、再绑定。只要一次绑定,只要更新其记录内容即可。
2、如果你条码输入是用扫描的,不需要判断长度是否13位字符,因为条码本身已经预设回车。这样可以不用interactivechange事件,可用 Valid 事件
3、你说用 999999控制只输入数字问题,我这测试过,是没问题的,我用的是VFP9。0
vfp-TC.rar (55.52 KB)

2015-02-04 09:57
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用fox3501在2015-2-4 08:58:51的发言:


老师能给个例子,好好学习封装一个GRID类及AddObject和RemoveObject方法,顺便解决自己的难题。谢谢。

参考示例:
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
CREATE CURSOR db (f1 I, f2 I)
INSERT INTO db VALUES (111, 122) 
GO TOP
of = NEWOBJECT("_form")
of.Show 
READ EVENTS
RETURN

DEFINE CLASS _form As Form
    ADD OBJECT Pageframe1 AS _Pageframe
    
    PROCEDURE UnLoad
        CLEAR EVENTS
    ENDPROC
ENDDEFINE

DEFINE CLASS _Pageframe AS Pageframe
    PageCount = 2
    Visible   = .T.
    
    PROCEDURE Page1.Init
        this.Caption = "点击第2页看看"
    ENDPROC

    PROCEDURE Page2.Activate
        IF VARTYPE(this.Grid1) == "O"
            this.RemoveObject("Grid1")
        ENDIF
        this.AddObject("Grid1", "_Grid")
        this.Grid1.SetFocus
    ENDPROC
ENDDEFINE

DEFINE CLASS _Grid AS Grid
    Visible = .T.
    
    PROCEDURE Init
        this.RecordSource = "db"
        this.ColumnCount  = 2
        this.Column1.ControlSource = "db.f1"
        this.Column2.ControlSource = "db.f2"
        this.Column1.RemoveObject("Text1")
        this.Column1.AddObject("Text1", "_Text")
    ENDPROC
ENDDEFINE
  
DEFINE CLASS _Text AS TextBox
    Visible = .T.
    
    PROCEDURE InteractiveChange
        thisform.Caption = TRANSFORM(this.Value)
    ENDPROC
ENDDEFINE
2015-02-04 10:07
fox3501
Rank: 1
等 级:新手上路
帖 子:50
专家分:7
注 册:2015-1-13
收藏
得分:0 
真是万分感谢kiff和“吹水佬”老师以及其他VFP前辈提供的无私帮助,谢谢。
现在抽空测试一下kiff老师提供的成果,好好学习一下“吹水佬”老师提供的资料。
2015-02-04 10:27
fox3501
Rank: 1
等 级:新手上路
帖 子:50
专家分:7
注 册:2015-1-13
收藏
得分:0 
kiff老师提供的帮助基本能解决问题,个别问题稍候再提问。
2015-02-04 17:34
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:2 
(个人见解,进攻参考)
楼主实现的这个功能,好像搞的有点过于复杂。因为较少的代码即可解决。不需要那麽多的表单内方法程序。再:条码格子里可以不需要非数字不可,可允许任意输入.不合格的自动提示无效,允许原地清空再次输入。grid 能够实现很强的‘表格内编程’的功能,比起其他众多的语言来说,这是他独有的。举个例子,药店管理程序,就是采用条码栏内多种输入模式,扫条码,直接出一种药品,其信息自动放入grid 应有位置,输拼音码,出现一批,鼠标选择点击一种,即自动进入grid 相应位置,焦点自动落入数量栏,输入数量,金额自动计算,表单右下角是金额合计等。输入错误,自动提示,重新让再次输入。可惜,没法给楼主做演示,只能随便说几句吧。(抱歉)

 
2015-02-04 18:52
fox3501
Rank: 1
等 级:新手上路
帖 子:50
专家分:7
注 册:2015-1-13
收藏
得分:0 
十分感谢qingfameng的见解,提供广阔的思路,本人VFP才入门知识有限,说明学习道路十分漫长,如能提供例子代码就更好了,不过还是再次感谢。
2015-02-04 19:35
快速回复:{求助}表格(gird)中的文本框(text)触发事件问题?
数据加载中...
 
   



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

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