gpt4 book ai didi

ms-access - MS Access 多控制按键 CTRL+A Handler

转载 作者:行者123 更新时间:2023-12-05 09:17:34 26 4
gpt4 key购买 nike

我有一个包含 10 多个文本控件的 Access 数据库。我想要一些代码来处理 CTRL + A KeyPress 事件。通常,在 Access 中按 CTRL + A 时,这会选择所有 记录。我的最终目标是让 CTRL + A 只选择该控件的文本(就像在浏览器的 URL 栏中按 CTRL + A,它只选择该文本)这样我就可以只删除该控件的文本。我检查了 this article ,因为我想要可以处理任何文本框的东西(处理每个文本框的 KeyPress = 60+ 行代码)。有没有什么办法可以让我有一个 for-next 循环?

Function HandleKeyPress(frm As Form, KeyAscii As Integer, ByVal e As KeyPressEventArgs) 'should it be a function or a sub?
For Each ctl In Me.Controls
If KeyAscii = 1 Then 'I think this is CTRL + A?
e.Handled = True 'Stop this keypress from doing anything in access
focused_text_box.SelStart = 0
focused_text_box.SelLength = Len(focused_text_box.Text)
End If
Next
End Function

除此之外,我如何将文本框的名称传递给此子/函数?

注意:如果您还没有注意到,我仍然是 VBA/Access 的菜鸟。

最佳答案

您当前的方法行不通,因为它包含多种在 VBA 中无法正常工作的内容(如 June7 所述),并且由于表单按键事件优先于文本框按键事件

您可以改用以下代码(受 this answer on SU 启发):

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyA And Shift = acCtrlMask Then 'Catch Ctrl+A
KeyCode = 0 'Suppress normal effect
On Error GoTo ExitSub 'ActiveControl causes a runtime error if none is active
If TypeOf Me.ActiveControl Is TextBox Then
With Me.ActiveControl
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
End If
ExitSub:
End Sub

使用 VBA 或仅使用属性 Pane 将 Form.KeyPreview 属性设置为 True 很重要,以允许此函数优先于默认行为。

关于ms-access - MS Access 多控制按键 CTRL+A Handler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47735162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com