主窗体里面的菜单按钮控制子窗口中的控件有点不太可取,因为如果子窗口如果是模式窗口的方式打开窗口的话,可能你想控制控件的代码根本没有办法执行。如果先访问再打开窗体,又可能因为窗体没有打开过而无法访问到子窗体控件,所以,这种代码适合在子窗体里面写,或者换一种思路,通过控制表的可编辑状态来控制绑定控件的可编辑状态。
这涉及一个知识点:
BaseGrid.AllowEdit、BaseGrid.CurrentRowData.Locked、BaseGrid.Cols("列名称").AllowEditing这几个参数都可以控制与表绑定的控件的可编辑状态。
所以我们可以先在子窗口打开之前,控制行、列的可编辑状态来控制控件。
- Dim frm As SmForm=Proj.Forms("窗体名称")
- For Each ctrl As Control In frm.ControlDictionary().Values
- Dim box As BoxDropDownBox=CType(ctrl,BoxDropDownBox)
- If box IsNot Nothing Then
- If box.Name="简称" Then
- ctrl.Enabled=False
- Else
- ctrl.Enabled=True
- End If
- End If
- Next
-
- Dim tbl As SmGrid=Proj.CurrentClickedGridMenu.BaseGrid.BaseBaseGrid
- '控制列的可编辑状态,以控制绑定控件的可编辑状态
- tbl.Cols("简称").AllowEditing=False
- tbl.Cols("col1").AllowEditing=True
- tbl.Cols("col2").AllowEditing=True
- '可以刷新控件的可编辑状态
- tbl.AllowEdit=True
- tbl.CurrentRowData.Locked=False
复制代码
|