以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]窗口中,全局代码enter,控制不住文件和图片呢?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=94180)

--  作者:yancheng
--  发布时间:2016/12/17 18:23:00
--  [求助]窗口中,全局代码enter,控制不住文件和图片呢?
窗口中,全局代码enter,控制不住文件和图片呢?(有的模式窗口能控制住 ,有的不起作用?)
其它 列都行。

Dim ctl As WinForm.Control = e.Sender
Dim dr As Row = Tables("材料").Current
Selec t Case ctl.BindingField
    Case "材料.定额编码","材料.材料名称","材料.规格","材料.供应商","材料.分类","材料.子分类","材料.单位","材料.品牌","材料.型号","材料.库存数量","材料.图片","材料.材料文件", _
        "材料.初始库存","材料.成本价","材料.零售价","材料.预算价","材料.最大库存","材料.最小库存","材料.备注","材料.网址","材料.网址2","材料.网址3", _
        "材料.选型图片","材料.选型规格","材料.选型品牌","材料.选型型号","材料.颜色","材料.产品尺寸","材料.使用区域","材料.选型单价","材料.选型网址","材料.官网"
        If dr.IsNull("审核") =False Then
            ctl.ReadOnly = BooleanEnum.True
        Else
            If _UserGroup  = "录入员" Or _UserGroup  = "会计" Then
                If dr("操作员") <> _UserName Then
                    ctl.ReadOnly = BooleanEnum.True
                Else
                    ctl.ReadOnly = BooleanEnum.False
                End If
            End If
        End If
End Sel ect

材料.图片","材料.材料文件
这两个 文件和图片。PictureViewer1  FileManager1类型的。
审核 了,还是能删除。
[此贴子已经被作者于2016/12/17 18:23:46编辑过]

--  作者:有点色
--  发布时间:2016/12/18 9:41:00
--  
 设置 Enabled 属性试试。
--  作者:yancheng
--  发布时间:2016/12/18 11:03:00
--  
Dim ctl As WinForm.Control = e.Sender
Sel ect Case ctl.BindingField
    Case "材料.图片","材料.材料文件"
        \'If dr.IsNull("审核") =False Then
            \'ctl.Enabled = False
        \'Else
            \'If _UserGroup  = "录入员" Or _UserGroup  = "会计" Then
                \'If dr("操作员") <> _UserName Then
            \'ctl.Enabled = True
                \'Else
            ctl.Enabled = False
                \'End If
            \'End If
        \'End If
End Select

这样,直接控制,都控制不住。
[此贴子已经被作者于2016/12/18 11:03:56编辑过]

--  作者:有点色
--  发布时间:2016/12/18 11:16:00
--  

1、加入msgbox,弹出和执行代码了吗?

 

2、你还不如直接在afterLoad事件直接控制。


--  作者:yancheng
--  发布时间:2016/12/18 11:32:00
--  
Dim ctl As WinForm.Control = e.Sender
Dim dr As Row = Tables("材料").Current

Select Case ctl.BindingField
    
    Case "材料.定额编码","材料.材料名称","材料.规格","材料.供应商","材料.分类","材料.子分类","材料.单位","材料.品牌","材料.型号","材料.库存数量", _
        "材料.初始库存","材料.成本价","材料.零售价","材料.预算价","材料.最大库存","材料.最小库存","材料.备注","材料.网址","材料.网址2","材料.网址3", _
        "材料.选型图片","材料.选型规格","材料.选型品牌","材料.选型型号","材料.颜色","材料.产品尺寸","材料.使用区域","材料.选型单价","材料.选型网址","材料.官网","材料.类别"
        msgbox(0)
        If dr.IsNull("审核") =False Then
            ctl.ReadOnly = BooleanEnum.True
        Else
            If _UserGroup  = "录入员" Or _UserGroup  = "会计" Then
                If dr("操作员") <> _UserName Then
                    ctl.ReadOnly = BooleanEnum.True
                Else
                    ctl.ReadOnly = BooleanEnum.False
                End If
            End If
        End If
        
        
    Case  "材料.图片","材料.材料文件"
        msgbox(1)
        \'If dr.IsNull("审核") =False Then
        \'ctl.Enabled = False
        \'Else
        \'If _UserGroup  = "录入员" Or _UserGroup  = "会计" Then
        \'If dr("操作员") <> _UserName Then
        \'ctl.Enabled = True
        \'Else
        ctl.Enabled = False
        \'End If
        \'End If
        \'End If
End Select

msgbox (0) 执行,msgbox(1)不执行,奇怪,什么道理?

--  作者:yancheng
--  发布时间:2016/12/18 11:44:00
--  
写到aterload里面,可以。 只能用:ctl.ReadOnly  ,不能用enabled

Dim r As Row = Tables("材料").Current
For Each ctl As WinForm.Control In e.Form.Controls
    If ctl.ReadOnly =  BooleanEnum.True Then
        ctl.BackColor=Color.LightGray
    End If
    If ctl.BindingField  = "材料.图片" OrElse ctl.BindingField  = "材料.材料文件" Then
        If r.IsNull("审核") =False Then
            ctl.ReadOnly =BooleanEnum.True
        Else
            If _UserGroup  = "录入员" Or _UserGroup  = "会计" Then
                If r("操作员") <> _UserName Then
                    ctl.ReadOnly =BooleanEnum.True
                Else
                    ctl.ReadOnly =BooleanEnum.False
                End If
            End If
        End If
    End If
Next

--  作者:有点色
--  发布时间:2016/12/18 11:44:00
--  

 说明,不会触发enter事件。

 

 建议写到AfterLoad事件,或者其它事件去。