【发布时间】:2018-10-20 08:49:09
【问题描述】:
C,感谢您的意见和鼓励!我稍微更改了表单和脚本,恐怕我保留了 if then 语句,因为我对格式感到满意。该脚本现在可以在“打开”事件运行时工作。
Private Sub Form_Open(Cancel As Integer)
Me.ChkAlbumNotes.SetFocus
If Me.ChkAlbumNotes.Value = False Then
Me.lblAlbumNotes.Visible = False
Me.txtAlbumNotes.Visible = False
Me.btnAlbumNotes.Visible = True
Else
Me.lblAlbumNotes.Visible = True
Me.txtAlbumNotes.Visible = True
Me.btnAlbumNotes.Visible = False
End If
Me.TrackName.SetFocus
If Me.TrackName = " " Then
Me.btnAddRecord.SetFocus
Else
Me.btnNextRecord.SetFocus
End If
End Sub
第一次打开表单时这很好,但我有一组导航按钮,由应用程序作为宏安装。单击按钮时,我无法将脚本添加到 On_Click 事件,因为 On_Click 已链接到宏。有没有办法将 On_Load 过程中的脚本合并到预定义的宏中?或者你能建议一种更简洁的方法来满足我的要求:
当表单打开时,检查复选框中是否存在错误值 如果复选框设置为 false,则注释文本框和标签将隐藏,注释按钮可见。
如果复选框的值为真,则备注文本框和标签可见,按钮隐藏。
测试完成后,我检查字段 Track Name 如果这是空的,我假设我在最后一条记录,并将焦点放在添加新记录按钮
如果 Track Name 不为空,则焦点设置为 Next Record 按钮
单击此按钮时,将打开下一个记录页面并重新开始该过程。
非常感谢
迈克
【问题讨论】:
-
由于
Me.frmArtistSubform!chkNotes.SetFocus不会产生错误,因此该复选框必须已经可见,因此使其可见不会改变任何内容。由于您没有更改任何其他控件的可见性,您希望发生什么? -
另外,如果子窗体是连续或数据表,设置子窗体上可见的控件将使其对所有记录可见。
If Then不需要,chkNotes 也不需要焦点:Me.somecontrol.Visible = Me.chkNotes可以使用条件格式来启用/禁用每条记录的控件。 -
欢迎您!不要担心“纯”代码,只需要改进你所知道的。
-
第一句描述了一个完全合理的操作,但发布的代码甚至没有尝试做描述的事情。该代码仅引用复选框并且甚至不引用其他文本框。 1) 如果代码甚至没有对这些文本框做任何事情,为什么你会期望其他控件的可见性发生变化?也许发布的代码不是您尝试的完整代码? 2)您能否解释一下为什么代码在
recordID_GotFocus()方法中?也许这个事件没有像你期望的那样被调用。 -
Stack Overflow 的意义不仅在于帮助有“即时”需求的个人,还在于生成非常有用的问题和答案的存档。我们中的许多人为 SO 做出了贡献,因为我们愿意贡献我们的时间来帮助他人。这不是在浪费我们的时间。事实上,您能做的最好的事情就是使用相关代码更新您的问题(不仅仅是 cmets),并根据反馈改进问题,以便给出正确的答案。我并不是要让你更新你的问题而感到内疚,但有时当有人提出一个问题然后放弃它时,这更像是一种浪费。 :)