搬家第41天-citect2018optionbutton单选框使用cicode脚本初始化和同组内排他设计

optionbutton也是microsoft form的一个控件,在人机交互的使用中也可能遇到,比如我们有这样一个界面,选择是中国人还是外国人,选择是男性还是女性。

这几个控件分别是AN6、AN7、AN8、AN9,初始化的代码是
FUNCTION optionbuttonini()
OBJECT myoptionbutton1,myoptionbutton2,myoptionbutton3,myoptionbutton4
myoptionbutton1=ObjectByName("AN6")
_ObjectSetProperty(myoptionbutton1,"CAPTION","中国人")
_ObjectSetProperty(myoptionbutton1,"backcolor",12500670)
_ObjectSetProperty(myoptionbutton1,"forecolor",16711680)
_ObjectSetProperty(myoptionbutton1,"GroupName","nationality")
 
myoptionbutton2=ObjectByName("AN7")
_ObjectSetProperty(myoptionbutton2,"CAPTION","外国人")
_ObjectSetProperty(myoptionbutton2,"backcolor",12500670)
_ObjectSetProperty(myoptionbutton2,"forecolor",16711680)
_ObjectSetProperty(myoptionbutton2,"GroupName","nationality")
 
myoptionbutton3=ObjectByName("AN8")
_ObjectSetProperty(myoptionbutton3,"CAPTION","男")
_ObjectSetProperty(myoptionbutton3,"backcolor",12500670)
_ObjectSetProperty(myoptionbutton3,"forecolor",16711680)
_ObjectSetProperty(myoptionbutton3,"GroupName","sex")
 
myoptionbutton4=ObjectByName("AN9")
_ObjectSetProperty(myoptionbutton4,"CAPTION","女")
_ObjectSetProperty(myoptionbutton4,"backcolor",12500670)
_ObjectSetProperty(myoptionbutton4,"forecolor",16711680)
_ObjectSetProperty(myoptionbutton4,"GroupName","sex")
END
 
按照在visual studio的环境下编程语法来看,GroupName属性的设置应该可以让单选框分组并且同组内排他了,但实际运行不是这个样子。
这显然是不符合需要的,就得多做设置一下。由于单选控件没有鼠标和键盘事件设置,也就无法在相应事件中写脚本,只能在citect项目事件中设置了。
首先定义四个变量ob1,ob2,ob3,ob4,对应四个单选控件的value属性,变量类型为long。
设置四个单选控件属性,让value属性对应上述四个变量。
四个事件依靠变量触发,注意在这里单选控件选中时,value属性为-1,不选中属性为0,相应的动作就确保了同组的单选控件互斥。
 
保存编译,然后在计算机设置向导中激活上诉四个事件。
运行后发现互斥功能并没有实现。
 
继续做尝试。新建四个cicode脚本
FUNCTION ob1value()
OBJECT myoptionbutton1
myoptionbutton1=ObjectByName("AN6")
_ObjectSetProperty(myoptionbutton1,"value",0)
END
 
FUNCTION ob2value()
OBJECT myoptionbutton2
myoptionbutton2=ObjectByName("AN7")
_ObjectSetProperty(myoptionbutton2,"value",0)
END
 
FUNCTION ob3value()
OBJECT myoptionbutton3
myoptionbutton3=ObjectByName("AN8")
_ObjectSetProperty(myoptionbutton3,"value",0)
END
 
FUNCTION ob4value()
OBJECT myoptionbutton4
myoptionbutton4=ObjectByName("AN9")
_ObjectSetProperty(myoptionbutton4,"value",0)
END
 
修改项目事件设置
 
保存编译,运行后实现了需要的功能。
 
多说几句,在练习的时候,对于value属性的数值,以为选中是1,不选是0,最后还是通过message函数显示单选框控件的value属性值来实践才搞清楚的,所以不要想当然,多看资料,多实践才是硬道理。
 
在练习的过程中,还尝试着加入了frame控件,以为可以将单选框分组,实际上那只是让界面好看而已,并且发现加了这个控件之后,运行时会很慢,进程卡在页面初始化那里,把它删除掉就好了。
 
 
补充说明:我后来重新想了想这种功能的设计,又写了一篇博客,简单多了。
http://blog.sina.com.cn/s/blog_724246b90102zax8.html

 

posted @ 2021-03-10 20:02  来自金沙江的小鱼  阅读(269)  评论(0编辑  收藏  举报