苏州三木软件科技有限公司

 找回密码
 立即注册
搜索
热搜: 活动
查看: 318|回复: 1

主表菜单按钮启动子窗口后如何控制子窗口控件

[复制链接]

56

主题

98

帖子

355

积分

中级会员

Rank: 3Rank: 3

积分
355
发表于 6 天前 | 显示全部楼层 |阅读模式
如图 主表新增按钮点击后启动了子窗口, 那我主表的菜单按钮里面应该怎么写代码 遍历 子窗口的控件?
我想要遍历子窗口 1.所有的BoxDropDownBox 控件 并且Enabled 设置为True
2.如果 控件BoxDropDownBox  名称叫 简称 就设置为False

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

106

主题

473

帖子

2953

积分

管理员

Rank: 9Rank: 9Rank: 9

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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|苏州三木软件科技有限公司 ( 苏ICP备2022038390号 )

苏公网安备 32058502010732号

GMT+8, 2025-6-14 14:54 , Processed in 0.084031 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表