将你的控件做成自响应,少写代码,极速开发

2023-10-23 17:09:03 浏览数 (2)

我们平常做表单的时候,常常要控制界面的某一些按钮可点击不可点击,有些文本框可输入或只读,常常写下如此的代码。

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等(权限)来启动当前控件的开闭,显示隐藏,只读或编辑

使用方法:

把控件到框架表单,就拥了自动开闭的功能,从此告别,一个一个手动动控制控件的开闭。

读万卷书,不如行万里路,行万里路,不如高人指路。

0 人点赞