我有一个要连续显示的记录列表。我也以这种形式放置按钮。
IE 我在列表中有一个“考试”列表,每个考试都有一个按钮,例如“删除”按钮,“编辑”按钮等等。我只想在检查设置了某个变量的情况下添加另一个按钮。
记录集示例
| Key | ExamName | ExamLocation | ExamDate | ExamComplete |
|-----|-------------|--------------|----------|--------------|
| 1 | Test Exam 1 | TX | 10/2/19 | Y |
| 2 | Test Exam 2 | SC | 10/4/19 | Y |
| 3 | Test Exam 3 | AL | 10/29/19 | N |
| 4 | Text Exam 4 | WA | 10/22/19 | Y |
因此,对于ExamComplete设置为“ Y”的每条记录,我都想显示一个按钮,但不显示那些具有“ N”的记录。
我忙于处理“ onCurrent”和“ onLoad”事件,没有成功。
示例代码
If me.ExamComplete.Value = "Y" Then
Me.BtnClickOpen.visable = TRUE
ELSE
Me.BtnClickOpen.visable = FALSE
END IF
有什么想法吗?
答案 0 :(得分:1)
将按钮放置在“表格标题”部分中。如果ExamComplete是“是/否”字段类型,请不要将参数放在引号内。不论字段类型如何,都可以使用单行格式-如果是/否,则只需引用该字段即可。
Me.BtnClickOpen.Visible = Me!ExamComplete
肯定需要当前事件形式的代码,但可能还需要ExamComplete复选框AfterUpdate。
只有一个按钮,因此VBA设置属性会影响该按钮的所有实例-每个记录将显示相同的内容。它将在“详细信息”部分中起作用,但由于所有按钮实例消失/出现,可能使用户分心和困惑。替代方法是使用带有条件格式(无VBA)的文本框来模拟“详细信息”部分中的按钮。文本框将始终可见(除非规则更改背景颜色以匹配表单以使其融合),并且每条记录分别动态启用/禁用。
答案 1 :(得分:0)
刚刚发现的Detail_Paint
事件可以连续形式用于按钮(和其他没有FormatConditions
属性的控件)上的条件格式Detail-Section
。尽管您无法设置visible属性,但是可以设置.Transparent
属性。由于Button_Click
事件也会在透明按钮上触发,因此您必须签入click事件,以了解是否应该执行代码。
Private Sub Detail_Paint()
Me.BtnClickOpen.Transparent = Not Me.ExamComplete.Value = "Y"
End Sub
Private Sub BtnClickOpen_Click()
If Me.ExamComplete.Value = "Y" Then
' button visible(not tranparent), execute button-click code
Else
'button transparent, do nothing
End If
End Sub