标题:咨询运行时控件复制的问题
只看楼主
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
结帖率:100%
已结贴  问题点数:20 回复次数:9 
咨询运行时控件复制的问题
表单中有个自有控件(VCX),想在程序运行时复制该控件,从而实现动态添加一个新控件
查帮助有个Object.CloneObject(NewName),但只能在设计时用,不支持运行时使用
不知能否实现上面的想法,请各位高人指点,先谢了
搜索更多相关主题的帖子: 运行 复制 咨询 控件 高人 
2022-10-26 10:14
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
动态新增控件恐怕很难做到,因为相当于是修改程序,我们知道VFP程序是需要进行伪编译后才能运行的,所以在运行阶段不容易做得到。但我们可以转换思路,先添加有限的若干个控件,把暂时不用的控件隐藏起来,需要时再让它显示出来,效果可能差不多的。

活到老,学到老! http://www. E-mail:hu-jj@
2022-10-26 10:37
foxfans
Rank: 4
等 级:贵宾
威 望:11
帖 子:90
专家分:278
注 册:2021-10-23
得分:5 
动态增减控件很简单,也常用,不然碰到一次要加载几百个控件手工一个个加是要命,下面一小段代码可以参考,可以通过 left top 任意的放不同位置。 comb1 可以 用宏替换来代替 comb+trans(i)  comb1 2 3 4 循环增加.

LOCAL cComb
cComb=""
FOR i=1 TO 10
    cComb="comb"+TRANSFORM(i)
    IF VARTYPE(_screen.&cComb.)<>"O"
      _screen.AddObject(cComb, "myFunc")
      _screen.&cComb..top=i*20
    ENDIF
ENDFOR

RETURN

DEFINE CLASS myFunc as ComboBox
    Visible = .T.
    RowSourceType = 1
    RowSource = "a,b,c,d"
    PROCEDURE init
        BINDEVENT(this,"interactivechange",this,"myclick")  &&可以放在表单的自定义属性里thisform.xxx()
    ENDPROC
    PROCEDURE interactivechange
        *!* 这里可以写其它逻辑
    ENDPROC
    PROCEDURE myclick
        MESSAGEBOX(this.Value,this.Name,64)
    ENDPROC
ENDDEFINE

[此贴子已经被作者于2022-10-26 11:23编辑过]

2022-10-26 11:08
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
回复 3楼 foxfans
感谢回复
由于用的是第三方控件,已经封装好了,所以没法用DEFINE CLASS myFunc as ComboBox声明,这种情况下这种方法好像有点不好使了
2022-10-26 11:48
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
回复 2楼 hu9jj
感谢回复
这确实是个思路,我先试试,再次感谢
2022-10-26 11:48
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:6 
以前帮别人做考试系统时,有类似的需求,代码一时找不到了,说一下大致流程
考试试卷自动生成流程 ,一次考试 大概有 1,单选题  2,多选题 3,填空题 ... 假设有三种题型
先 生成3个随机数组,分别代表这几种题型, 根据随机数组,连接远程题库服务器,在服务器题库 中,随机抽取题目...关闭连接.
然后,进入试卷生成环节:
不管哪种题型,每道题的可选项都有可能不同,比如单选,有的是3选1,有的是4选1,
多选题,供选项的数量,每题也不同,
填空题,每题要填的空也可能不同,有的是填2空,有的填3空...
说了那么多,无非就是想说,程序对付这种开发需求,一定是可以解决的,必须用到动态生成控件,这是绕不过去的.
根据每题的 供选项的多少 ,程序 就循环生成 这些项目,
单选题,就在 表单上 生成 一个单选框, 可选项的数量临时由程序决定.
多选题,就在 表单上 生成 N个复选框, 可选项的数量临时由程序决定.
填空题,就在 先是题干描述,加2个回车,后面就生成N个Text框 , 数量临时由程序决定.

最后,是几个按钮: 上一题 /下一题 /交卷 , 这几个按钮的出现位置, 也是根据每套试卷的题量的不同,
出现的位置不一样,也需要动态生成.
2022-10-26 11:57
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:9 
回复 4楼 laowan001
createobject不行吗?
2022-10-26 13:10
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
回复 7楼 sam_jiang
感谢回复,我试下
2022-10-26 14:31
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
回复 6楼 厨师王德榜
感谢大厨回复,思路明白了,对应具体应用我再想想
2022-10-26 14:33
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
回复 7楼 sam_jiang
方法可行,谢谢啦
2022-10-27 11:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510441-1-1.html




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

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