| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 95 人关注过本帖
标题:用纯代码,在_SCREEN上添加控件,如何实现事件响应
只看楼主 加入收藏
oyjh710129
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-1-4
收藏
 问题点数:20 回复次数:6 
用纯代码,在_SCREEN上添加控件,如何实现事件响应
&&直接向 _SCREEN 添加控件的代码程序
* 清除 _SCREEN 上可能存在的旧控件
IF TYPE("_SCREEN.txtInput") = "O"
    _SCREEN.RemoveObject("txtInput")
ENDIF

gnVariable=0
use yourTable

* 向 _SCREEN 添加文本框控件
_SCREEN.AddObject("txtInput", "TextBox")
WITH _SCREEN.txtInput
    _SCREEN.txtInput.Visible = .T.
    _SCREEN.txtInput.Top = 50
    _SCREEN.txtInput.Left = 50
    _SCREEN.txtInput.Width = 200
    _SCREEN.txtInput.Height = 24
    .ControlSource = "gnVariable"  && 绑定到变量



* 添加按钮控件
_SCREEN.AddObject("btnClose", "CommandButton")

    _SCREEN.btnClose.Caption = "关闭"
    _SCREEN.btnClose.Top = 100
    _SCREEN.btnClose.Left = 50
    _SCREEN.btnClose.Width = 80
    _SCREEN.btnClose.Height = 30
    _SCREEN.btnClose.Visible = .T.


    PROCEDURE _SCREEN.btnClose.Click
      _SCREEN.RemoveObject("txtInput")
      _SCREEN.RemoveObject("btnClose")
    ENDPROC


* 刷新 _SCREEN 显示
_SCREEN.Refresh()

read events




以上
    PROCEDURE _SCREEN.btnClose.Click
      _SCREEN.RemoveObject("txtInput")
      _SCREEN.RemoveObject("btnClose")
    ENDPROC
出错,不知应该怎么才正确,请哪位大咖指导一下。










搜索更多相关主题的帖子: 控件 添加 事件 响应 代码 
前天 09:46
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10615
专家分:43224
注 册:2014-5-20
收藏
得分:0 
前天 14:30
oyjh710129
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-1-4
收藏
得分:0 
是的,建立类后是可以运行了,但事件运行完后,不会退出来执行程序的下一语句。
前天 16:42
hsfisher
Rank: 2
等 级:论坛游民
帖 子:46
专家分:26
注 册:2009-4-26
收藏
得分:0 
学习了
昨天 00:07
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:934
专家分:1470
注 册:2021-10-13
收藏
得分:0 
回复 楼主 oyjh710129
创建的对象btnclose的click事件是空的,并没有代码。vfp不能运行时给事件写入代码。。。

可以自定义btnclose类,在类中加入click代码,再实例化这个类,就可以了。

或者使用bindevent给click事件关联一个自定义的事件,并执行它。

修改你的代码,vfp9.0+win7下运行通过~
程序代码:
&&直接向 _SCREEN 添加控件的代码程序
* 清除 _SCREEN 上可能存在的旧控件
IF TYPE("_SCREEN.txtInput") = "O"
    _SCREEN.RemoveObject("txtInput")
ENDIF
IF TYPE("_SCREEN.btnclose") = "O"
    _SCREEN.RemoveObject("btnclose")
ENDIF
*!*    gnVariable=0
*!*    use yourTable

* 向 _SCREEN 添加文本框控件
_SCREEN.AddObject("txtInput", "TextBox")
WITH _SCREEN.txtInput
    .Visible = .T.
    .Top = 50
    .Left = 50
    .Width = 200
    .Height = 24
*!*        .ControlSource = "gnVariable"  && 绑定到变量
ENDWITH 


* 添加按钮控件
_SCREEN.AddObject("btnClose", "CommandButton")
WITH _screen.btnclose

    .Caption = "关闭"
    .Top = 100
    .Left = 50
    .Width = 80
    .Height = 30
    .Visible = .T.
    
ENDWITH 

PUBLIC locustom && 没有申明这个变量作用域,居然不能正确运行,排错很久。。。
*加入read events,就可以删除上面这句了。
locustom=CREATEOBJECT("ocustom")
*确保控件已正确创建
IF TYPE("_SCREEN.btnClose") = "O"    
    BINDEVENT(_SCREEN.btnClose, "Click", locustom, "customClick")
ELSE    
    MESSAGEBOX("按钮控件不存在")
ENDIF
* 刷新 _SCREEN 显示
*_SCREEN.Refresh()
*RELEASE locustom
read events &&不然一闪而过

DEFINE CLASS ocustom AS Custom    
PROCEDURE customClick        
    *WAIT WINDOW "事件触发成功" TIMEOUT 1        
    _SCREEN.RemoveObject("txtInput")        
    _SCREEN.RemoveObject("btnClose") 
    RELEASE locustom
    clear events 
ENDPROC
ENDDEFINE






[此贴子已经被作者于2025-6-19 11:42编辑过]

昨天 11:34
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:934
专家分:1470
注 册:2021-10-13
收藏
得分:0 
添加自定义类的方式如下:

程序代码:
&&直接向 _SCREEN 添加控件的代码程序
* 清除 _SCREEN 上可能存在的旧控件
IF TYPE("_SCREEN.txtInput") = "O"
    _SCREEN.RemoveObject("txtInput")
ENDIF
IF TYPE("_SCREEN.btnclose") = "O"
    _SCREEN.RemoveObject("btnclose")
ENDIF
*!*    gnVariable=0
*!*    use yourTable

* 向 _SCREEN 添加文本框控件
_SCREEN.AddObject("txtInput", "TextBox")
WITH _SCREEN.txtInput
    .Visible = .T.
    .Top = 50
    .Left = 50
    .Width = 200
    .Height = 24
*!*        .ControlSource = "gnVariable"  && 绑定到变量
ENDWITH 


* 添加按钮控件
_SCREEN.AddObject("btnClose", "mybtnclose")
WITH _screen.btnclose

    .Caption = "关闭"
    .Top = 100
    .Left = 50
    .Width = 80
    .Height = 30
    .Visible = .T.
    
ENDWITH 

DEFINE CLASS mybtnclose AS commandbutton
PROCEDURE Click        
    _SCREEN.RemoveObject("txtInput")        
    _SCREEN.RemoveObject("btnClose") 
ENDPROC
ENDDEFINE
昨天 12:04
schtg
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:Usa
等 级:贵宾
威 望:67
帖 子:2082
专家分:4434
注 册:2012-2-29
收藏
得分:0 
学习啦,谢谢!
昨天 13:35
快速回复:用纯代码,在_SCREEN上添加控件,如何实现事件响应
数据加载中...
 
   



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

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