发信人: foxzz()
整理人: hunter__fox(2002-03-16 22:47:22), 站内信件
|
请参考:
1、设置控件的enabled=.f.
2、在基类增加方法:setallprop()
进一步,增加控件访问管理属性access,以下程序供参考:
LPARAMETER oContainer,cContainerType
* Checks for General fields
LOCAL i,oControlParent,j
PUBL LCURROBJECT
LCURROBJECT=''
IF PARA()=0
m.oControlParent = THISFORM
m.cContainerType='1'
ELSE
m.oControlParent = m.oContainer
ENDIF
IF EMPTY(m.cContainerType)
m.cContainerType='1'
ENDIF
IF ATC("PageFrame1",m.oControlParent.name) # 0
FOR I=1 TO M.oControlParent.PageCount
THIS.SetAllProp(m.oControlParent.pages[m.i])
ENDFOR
return .t.
ENDIF
LOCAL LLCUROBJECTRIGHT
LLCUROBJECTRIGHT=.T.
IF m.cContainerType='2' && Commandgroup
FOR i = 1 TO m.oControlParent.ButtonCount
DO CASE
CASE ATC(m.oControlParent.Buttons[m.i].BaseClass,"Commandbutton
,CheckBox,TextBox,OleBoundControl,ComBobox,EditBox,SPINNER,Listbox") #
0
LCURROBJECT=m.oControlParent.Buttons[m.i].NAME
IF TYPE('m.oControlParent.BUTTONS[m.i].RIGHTS')<>'U'
LLCUROBJECTRIGHT=m.oControlParent.BUTTONS[m.i].RIGHTS
ENDIF
IF TYPE('m.oControlParent.Buttons[m.i].access')='U'
m.oControlParent.Buttons[m.i].Enabled = _SCREEN.ACTIVEF
ORM.lAllowEdits ;
AND LLCUROBJECTRIGHT
ELSE
IF m.oControlParent.Buttons[m.i].access
m.oControlParent.Buttons[m.i].Enabled = _SCREEN.ACTI
VEFORM.lAllowEdits ;
AND LLCUROBJECTRIGHT
ENDIF
ENDIF
ENDCASE
ENDFOR
RETURN .T.
ENDIF
IF .f. and m.cContainerType='3' && Grid
FOR i = 1 TO m.oControlParent.ColumnCount
DO CASE
CASE ATC(m.oControlParent.Columns[m.i].BaseClass,"Commandbutton
,CheckBox,TextBox,OleBoundControl,ComBobox,EditBox,SPINNER,Listbox") #
0
LCURROBJECT=m.oControlParent.Columns[m.i].NAME
IF TYPE('m.oControlParent.Columns[m.i].RIGHTS')<>'U'
LLCUROBJECTRIGHT=m.oControlParent.Columns[m.i].RIGHTS
ENDIF
IF TYPE('m.oControlParent.Columns[m.i].access')='U'
m.oControlParent.Columns[m.i].Enabled = _SCREEN.ACTIVEF
ORM.lAllowEdits ;
AND LLCUROBJECTRIGHT
ELSE
IF m.oControlParent.Columns[m.i].access
m.oControlParent.Columns[m.i].Enabled = _SCREEN.ACTI
VEFORM.lAllowEdits ;
AND LLCUROBJECTRIGHT
ENDIF
ENDIF
ENDCASE
THIS.SetAllProp(m.oControlParent.Columns[m.i])
ENDFOR
RETURN .T.
ENDIF
IF m.cContainerType='1'
FOR i = 1 TO m.oControlParent.ControlCount
IF TYPE('m.oControlParent.Controls[m.i].RIGHTS')<>'U'
LLCUROBJECTRIGHT=m.oControlParent.Controls[m.i].RIGHTS
ENDIF
DO CASE
CASE ATC("Page",m.oControlParent.Controls[m.i].BaseClass) # 0
THIS.SetAllProp(m.oControlParent.Controls[m.i])
CASE ATC("Container",m.oControlParent.Controls[m.i].BaseClass) # 0
THIS.SetAllProp(m.oControlParent.Controls[m.i])
CASE ATC("Commandgroup",m.oControlParent.Controls[m.i].BaseClass) # 0
THIS.SetAllProp(m.oControlParent.Controls[m.i],'2')
CASE ATC(m.oControlParent.Controls[m.i].BaseClass,"Commandbutton,Chec
kBox,TextBox,OleBoundControl,ComBobox,EditBox,SPINNER,Listbox") # 0
LCURROBJECT=m.oControlParent.Controls[m.i].NAME
IF TYPE('m.oControlParent.Controls[m.i].access')='U'
m.oControlParent.Controls[m.i].Enabled = _SCREEN.ACTIVEFOR
M.lAllowEdits ;
AND LLCUROBJECTRIGHT
ELSE
IF m.oControlParent.Controls[m.i].access
m.oControlParent.Controls[m.i].Enabled = _SCREEN.ACTIVE
FORM.lAllowEdits ;
AND LLCUROBJECTRIGHT
ENDIF
ENDIF
IF 'NOACCESS' $ m.oControlParent.Controls[m.i].TAG
m.oControlParent.Controls[m.i].Enabled =.F.
ENDIF
&& 刷新代码意义
IF m.oControlParent.Controls[m.i].BaseClass='TextBox'
IF TYPE('m.oControlParent.Controls[m.i].LCODENAME')<>'U'
AND m.oControlParent.Controls[m.i].LCODENAME
m.oControlParent.Controls[m.i].VALUE=''
ENDIF
ENDIF
CASE ATC(m.oControlParent.Controls[m.i].BaseClass,"EditBox") # 0
IF TYPE('m.oControlParent.Controls[m.i].access')='U'
m.oControlParent.Controls[m.i].ReadOnly = !_SCREEN.ACTIVEFORM.lA
llowEdits ;
AND LLCUROBJECTRIGHT
ELSE
IF m.oControlParent.Controls[m.i].access
m.oControlParent.Controls[m.i].ReadOnly = !_SCREEN.ACTI
VEFORM.lAllowEdits ;
AND LLCUROBJECTRIGHT
ENDIF
ENDIF
IF .F. AND !THIS.HasMemo
WITH m.oControlParent.Controls[m.i]
THIS.EditForeColor = .ForeColor
THIS.EditDisForeColor = .DisabledForeColor
THIS.EditBackColor = .BackColor
THIS.EditDisBackColor = .DisabledBackColor
THIS.HasMemo = .T.
ENDWITH
ENDIF
IF .F.
m.oControlParent.Controls[m.i].ForeColor = IIF(_SCREEN.ACTIVEFORM
.lAllowEdits,_SCREEN.ACTIVEFORM.EditForeColor,_SCREEN.ACTIVEFORM.EditD
isForeColor)
m.oControlParent.Controls[m.i].BackColor = IIF(_SCREEN.ACTI
VEFORM.lAllowEdits,_SCREEN.ACTIVEFORM.EditBackColor,_SCREEN.ACTIVEFORM
.EditDisBackColor)
ENDIF
IF 'NOACCESS' $ m.oControlParent.Controls[m.i].TAG
m.oControlParent.Controls[m.i].Enabled =.F.
ENDIF
CASE ATC(m.oControlParent.Controls[m.i].BaseClass,"Grid") # 0
IF TYPE('m.oControlParent.Controls[m.i].access')='U'
m.oControlParent.Controls[m.i].Enabled = _SCREEN.ACTIVEFOR
M.lAllowEdits
m.oControlParent.Controls[m.i].DeleteMark =_SCREEN.ACTIVEF
ORM.lAllowEdits
m.oControlParent.Controls[m.i].READONLY = NOT _SCREEN.ACTIVE
FORM.lAllowEdits
IF .F.
IF _SCREEN.ACTIVEFORM.lAllowEdits
m.oControlParent.Controls[m.i].Enabled = .T.
m.oControlParent.Controls[m.i].DeleteMark = .T.
m.oControlParent.Controls[m.i].READONLY = .F.
ELSE
m.oControlParent.Controls[m.i].Enabled = .T.
m.oControlParent.Controls[m.i].DeleteMark = .F.
m.oControlParent.Controls[m.i].READONLY = .T.
ENDIF
ENDIF
ELSE
IF m.oControlParent.Controls[m.i].access
m.oControlParent.Controls[m.i].Enabled = _SCREEN.ACTIVE
FORM.lAllowEdits
m.oControlParent.Controls[m.i].DeleteMark =_SCREEN.ACTI
VEFORM.lAllowEdits
m.oControlParent.Controls[m.i].READONLY = NOT _SCREEN.A
CTIVEFORM.lAllowEdits
IF .F.
IF _SCREEN.ACTIVEFORM.lAllowEdits
m.oControlParent.Controls[m.i].Enabled = .T.
m.oControlParent.Controls[m.i].DeleteMark = .T.
m.oControlParent.Controls[m.i].READONLY = .F.
ELSE
m.oControlParent.Controls[m.i].Enabled = .T.
m.oControlParent.Controls[m.i].DeleteMark = .F.
m.oControlParent.Controls[m.i].READONLY = .T.
ENDIF
ENDIF
ELSE
&& m.oControlParent.Controls[m.i].ENABLED = !_SCREEN.AC
TIVEFORM.lAllowEdits
&& m.oControlParent.Controls[m.i].DeleteMark =!_SCREEN.
ACTIVEFORM.lAllowEdits
ENDIF
&& THIS.SetAllProp(m.oControlParent.Controls[m.i],'3')
&& m.oControlParent.Controls[m.i].ENABLED = _SCREEN.ACTIVEFORM.lA
llowEdits
&& m.oControlParent.Controls[m.i].DeleteMark =_SCREEN.ACTIVEFORM.
lAllowEdits
ENDIF
ENDCASE
ENDFOR
ENDIF
&&
3、增加modify方法:
LPARAMETER oContainer,cContainerType
* Checks for General fields
LOCAL i,oControlParent,j
PUBL LCURROBJECT
LCURROBJECT=''
IF PARA()=0
m.oControlParent = THISFORM
m.cContainerType='1'
ELSE
m.oControlParent = m.oContainer
ENDIF
IF EMPTY(m.cContainerType)
m.cContainerType='1'
ENDIF
IF ATC("PageFrame1",m.oControlParent.name) # 0
FOR I=1 TO M.oControlParent.PageCount
THIS.SetAllProp(m.oControlParent.pages[m.i])
ENDFOR
return .t.
ENDIF
|
|