| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4474 人关注过本帖
标题:可以在已有的表单上创建对象并定义对象事件吗
只看楼主 加入收藏
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
结帖率:88.52%
收藏
已结贴  问题点数:20 回复次数:24 
可以在已有的表单上创建对象并定义对象事件吗
比如,表单已经通过可视化创建好了,里面已经有很多控件,临时需要增加一个表格,我在表单的INIT事件中加入如下代码:
THISFORM.ADDOBJECT('grid','_grid')
DEFINE CLASS _Grid as grid
  visible=.t.
enddefine
却不能保存,提示错误:方法程序或事件不能含有嵌套的过程或类定义
2016-03-12 13:49
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
ThisForm.AddObject("Grid1", "Grid")
ThisForm.Grid1.Visible = .T.

授人以渔,不授人以鱼。
2016-03-12 14:17
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
定义表格的属性可以,但是假如我还要在表格的COLUMN1下的TEXT1的click事件中添加一段代码,怎么实现呢
2016-03-12 14:22
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
当然可通过在可视化表单里面实现,但是我就是想通过ADDOBJECT这样的方式实现可以吗
2016-03-12 14:25
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
兩種方法:
1.事先定義一個合適的繼承自Grid的類MyGrid,再AddObject("Grid1", "MyGrid")
2.用BindEvent()臨時綁定控件事件到當前類事件

[此贴子已经被作者于2016-3-12 14:57编辑过]


授人以渔,不授人以鱼。
2016-03-12 14:26
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
非常感谢TonyDeng的帮助,我决定用BINGENENT
2016-03-12 14:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
注意BindEvent()是vfp9才有的

授人以渔,不授人以鱼。
2016-03-12 15:08
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
動態添加對象,原則是什麽時候用就什麽時候創建。你在Init中做這事,其實與設計時靜態定義沒什麽區別,因爲要讓對象動態顯現可以用Visible屬性控制(對象已存在但不顯示出來而已)。動態顯示和動態創建,是不同的思路。

授人以渔,不授人以鱼。
2016-03-12 15:15
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用fanjinyu9108在2016-3-12 13:49:56的发言:

比如,表单已经通过可视化创建好了,里面已经有很多控件,临时需要增加一个表格,我在表单的INIT事件中加入如下代码:
THISFORM.ADDOBJECT('grid','_grid')
DEFINE CLASS _Grid as grid
  visible=.t.
enddefine
却不能保存,提示错误:方法程序或事件不能含有嵌套的过程或类定义

主要问题不在 THISFORM.ADDOBJECT('grid','_grid')
问题在于:
    PROCEDURE init
        this.AddObject("grid", "_Grid")
        DEFINE CLASS _Grid as grid
            visible = .t.
        ENDDEFINE
    ENDPROC
应该将类定义:
        DEFINE CLASS _Grid as grid
            visible = .t.
        ENDDEFINE
放到VCX或PRG,要引用时先载入。
2016-03-12 15:44
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
如:
程序代码:
** test.prg
CREATE CURSOR tt (f1 I, f2 I)
of = CREATEOBJECT("form1")
of.show(1)

DEFINE CLASS form1 as Form
    height = 400
    ADD OBJECT grid1 as grid
    
    PROCEDURE init
        this.AddObject("grid", "_Grid")
    ENDPROC
ENDDEFINE

DEFINE CLASS _Grid as grid
    top = 200
    visible = .t.
ENDDEFINE
2016-03-12 15:48
快速回复:可以在已有的表单上创建对象并定义对象事件吗
数据加载中...
 
   



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

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