Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выделить содержимое текста в поле / 8 сообщений из 8, страница 1 из 1
08.10.2018, 11:51
    #39714324
nataxa23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделить содержимое текста в поле
Задача простая, нужно чтобы по нажатию горячих клавиш выделялся весь текст внутри поля.
Не могу понять, почему не срабатывает нажатие «Ctrl+A»???
В редакторе VBA в пошаговом режиме видно, что код срабатывает:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Form_Load()
  Me.KeyPreview = True
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

  Select Case KeyCode
    Case vbKeyA
      If Shift = 2 Then '1-SHIFT (fmShiftMask), 2-CTRL (fmCtrlMask), 4-ALT (fmAltMask)
        Me.RibbonXML.SetFocus
        Me.RibbonXML.SelStart = 0
        Me.RibbonXML.SelLength = Len(Me.RibbonXML.Text)
      End If
  End Select
End Sub




___________________________________
Использую Microsoft Access 2010, 64 бит.

Спасибо каждому, кто мне когда-либо здесь помог и продолжает помогать.
...
Рейтинг: 0 / 0
08.10.2018, 12:05
    #39714332
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделить содержимое текста в поле
nataxa23Не могу понять, почему не срабатывает нажатие «Ctrl+A»???Наверное потому, что это сочетание для "выделить всё".И если код отрабатывает (не проверял, верю на слово), то можно попробовать так
Код: vbnet
1.
2.
3.
4.
...
Me.RibbonXML.SelLength = Len(Me.RibbonXML.Text)
KeyCode=0
...
...
Рейтинг: 0 / 0
08.10.2018, 12:46
    #39714345
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделить содержимое текста в поле
nataxa23Задача простая, нужно чтобы по нажатию горячих клавиш выделялся весь текст внутри поля.
Не могу понять, почему не срабатывает нажатие «Ctrl+A»???

А почему не хотите использовать Ctrl-F2 (выделение поля)?
И обработка нажатия в коде не будет нужна.
...
Рейтинг: 0 / 0
08.10.2018, 16:14
    #39714521
nataxa23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделить содержимое текста в поле
ПанургНаверное потому, что это сочетание для "выделить всё".И если код отрабатывает (не проверял, верю на слово), то можно попробовать так
Код: vbnet
1.
2.
3.
4.
...
Me.RibbonXML.SelLength = Len(Me.RibbonXML.Text)
KeyCode=0
...


Спасибо, заработало.
__MichelleА почему не хотите использовать Ctrl-F2 (выделение поля)?
И обработка нажатия в коде не будет нужна.
Да просто так привычнее, по аналогии с другими приложениями используется «Ctrl+A».
...
Рейтинг: 0 / 0
08.10.2018, 19:21
    #39714648
nataxa23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделить содержимое текста в поле
Заработало, но не везде.
Выдает ошибку № 2474: «Введеное выражение требует, чтобы элемент управления находился в активном окне»
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  Dim ctrl As control
  
  Select Case KeyCode
    Case vbKeyA
      If Shift = 2 Then '1-SHIFT (fmShiftMask), 2-CTRL (fmCtrlMask), 4-ALT (fmAltMask)
        Set ctrl = Screen.ActiveControl
        ctrl.SetFocus
        If (ctrl.Name = "Поле1") Then
          If (ctrl.SelStart = 0) Then
            ctrl.SelStart = 0
            ctrl.SelLength = Len(ctrl.Text)
            KeyCode = 0
          End If
        ElseIf (ctrl.Name = "Поле2") Then
          If (ctrl.SelStart = 0) Then
            ctrl.SelStart = 0
            ctrl.SelLength = Len(ctrl.Text)
            KeyCode = 0
          End If
        ElseIf (ctrl.Name = "Поле3") Then
          If (ctrl.SelStart = 0) Then
            ctrl.SelStart = 0
            ctrl.SelLength = Len(ctrl.Text)
            KeyCode = 0
          End If
        End If
        Set ctrl = Nothing
      End If
  End Select
End Sub



Почему ошибку то выдает, курсор же находится в поле?
...
Рейтинг: 0 / 0
08.10.2018, 20:39
    #39714668
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделить содержимое текста в поле
Предположу, что надо так
nataxa23
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...        
   With Me.ActiveControl
        'ctrl.SetFocus
       Select Case  .Name
        Case "Поле1", "Поле2", "Поле3"
          If (.SelStart = 0) Then
            '.SelStart = 0'зачем? Уже и так равно нулю
            .SelLength = Len(.Text)
            KeyCode = 0
          End If
        End Select
        'Set ctrl = Nothing
   End with
...

ИМХО, так короче и понятней. В этих ифах столько путаницы...
...
Рейтинг: 0 / 0
09.10.2018, 10:03
    #39714780
Выделить содержимое текста в поле
nataxa23, а зачем вы используете Form_KeyDown, если действия относятся к конкретному контролу. Используйте его KeyDown.
...
Рейтинг: 0 / 0
09.10.2018, 11:23
    #39714811
nataxa23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделить содержимое текста в поле
ПанургИМХО, так короче и понятней. В этих ифах столько путаницы...
Действительно, понятней. Век живи, век учись.
Спасибо.
Есть еще вопрос, с которым так же столкнулась. Как вычислить, что внутри поля курсор в тексте стоит либо на самой первой строке, но не вначале текста, равно как и на оборот на самой последней, но не в конце текста?
А то в этих случаях у меня курсор выходит из активного поля и переходит на другой контрол.
Кривцов Анатолийnataxa23, а зачем вы используете Form_KeyDown, если действия относятся к конкретному контролу. Используйте его KeyDown.
Потому что к форме у меня назначены свои горячие клавиши, чтобы форма их перехватывала. Например F2 - у меня сохранение записи, вместо выделения текста в поле.
К тому же я использую один и тот же код для нескольких полей.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выделить содержимое текста в поле / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]