我们平常做表单的时候,常常要控制界面的某一些按钮可点击不可点击,有些文本框可输入或只读,常常写下如此的代码。
thisform.text1.readonly=.f.
thisform.text1.readonly=.t.
thisform.btnadd.Enabled=.t. 或.t.
一般写好,不改还好,就是怕的是加减控件,你又得找出控制代码,一行一行添加或清除,老烦人了。
但现在,现在。。。。
但学了自响应之后,这些乱乱的控制代码可以从你的开发中请出去了。
自响应控件可以响应表单的操作状态和权限状态。目前祺佑三层开发框架定义了三种操作状态,三种权限状态。
具体表现为Qiyu_Form_SingleCursor 表单的四个属性
Opcode 属性 0 浏览 1 新增 2修改
Isadd 属性 .T. 允许新增 .F. 不允许
Isedit 属性 .T. 允许编辑 .F. 不允许
Isdel 属性 .T. 允许删除 .F. 不允许
那如何定义自响应控件呢?
首先选择你的制作的自定义控件,添加四个属性opcode,isadd,isedit,isdel
1、init事件添加如下代码
代码语言:javascript复制&&向主表单注册自身
Thisform.registerObserver(This)
2、添加一个自定义方法,方法名:UpdateState
代码语言:javascript复制Lparameters isadd,isedit,isdel,opcode,ischeck,isprint,iskeep,isud1,isud2,isud3
This.Isadd=isadd
This.Isedit=isedit
This.Isdel=isdel
This.Opcode=opcode
This.Ischeck=ischeck
This.Isprint=isprint
This.Iskeep=iskeep
This.Isud1=isud1
This.Isud2=isud2
This.Isud3=isud3
This.SetState()
3、添加自定义方法:方法名:SetState
代码语言:javascript复制If This.Isadd=.T. .And. This.Isedit=.T.
If Inlist(This.Opcode,1,2)
This.Enabled=.T.
Else
This.Enabled=.F.
Endif
Else
This.Enabled=.F.
Endif
根据 this.opcode(状态), this.isadd this.isedit this.isdel等(权限)来启动当前控件的开闭,显示隐藏,只读或编辑
使用方法:
把控件到框架表单,就拥了自动开闭的功能,从此告别,一个一个手动动控制控件的开闭。
读万卷书,不如行万里路,行万里路,不如高人指路。