В обработке события Form_KeyDown хочу обработать нажатие CTRL-ENTER. У формы свойство KeyPreview=True.
Но не схватывает.

Что я делаю неверно?
Ennor писал(а):А вообще контролы есть? Хотя вряд ли от этого зависит, не припомню такого...
Если только ошибка в обработчике, должно быть так:
If Shift = vbCtrlMask and (KeyCode = vbKeyExecute or KeyCode = vbKeyReturn) then
...
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyEscape 'остановить поиск
blnStopQSerach = True
Case vbKeyF10 'Выход
Unload Me
End Select
Select Case Shift
Case vbCtrlMask 'просто CTRL
Select Case KeyCode
Case vbKeyReturn 'открыть в FIPS
StartFips MSGIDinText, "C:\FIPS"
Case vbKeyA 'выбрать весь текст сообщения
mnuSelectAllText_Click
Case vbKeyC 'копировать в буфер
mnuCopy_Click
Case vbKeyTab 'Выбор конференции
If frmAreaSelect.CanSelect Then
SetEventsText ("Выбор конференции...")
frmAreaSelect.Show
frmAreaSelect.Refresh
End If
Case vbKeyT 'Отображение атрибутов
chkOptShowAttrib(0).Value = 1 - chkOptShowAttrib(0).Value
chkOptShowAttrib_Click (0)
Case vbKeyH 'Отображение скрытых строк
chkOptShowAttrib(1).Value = 1 - chkOptShowAttrib(1).Value
chkOptShowAttrib_Click (1)
Case vbKeyD 'Отображение удаленных писем
chkOptShowAttrib(2).Value = 1 - chkOptShowAttrib(2).Value
chkOptShowAttrib_Click (2)
Case vbKeyO 'Открыть базу
OpenBase
Case vbKeyR 'пометить все как прочитанные
MarkAllAsRead
Case vbKeyS 'сохранить письмо в файл
mnuSaveMessageToFile_Click
Case vbKeyF 'Поиск в тексте письма
If frmAreaSelect.CanSelect Then frmSearch.Show
End Select
Case vbShiftMask 'SHIFT
Select Case KeyCode
Case vbKeyAdd 'развернуть тред
mnuExpandTreeView_Click
Case vbKeySubtract ' свернуть тред
mnuNonExpandTreeView_Click
End Select
Case vbCtrlMask + vbShiftMask 'CTRL с SHIFT'ом
Select Case KeyCode
Case vbKeyR 'пометить тред как прочитаный
mnuMarkAllInTreadAsRead_Click
Case vbKeyDelete 'пометить весь тред как удалённый
mnuMarkTreadAsDeleted_Click
Case vbKeyM 'пометить все сообщения в треде
mnuMarkAllMessInTread_Click
Case vbKeyS 'сохранить тред
mnuSaveTreadToFile_Click
Case vbKeyInsert 'уменьшить высоту списка писем
SendMessage MsgTextBox.hwnd, WM_SETREDRAW, 0, &O0
SabjList.Height = SabjList.Height - 50
SendMessage MsgTextBox.hwnd, WM_SETREDRAW, 1, &O0
Form_Resize
Case vbKeyDelete 'увеличить высоту списка писем
SendMessage MsgTextBox.hwnd, WM_SETREDRAW, 0, &O0
SabjList.Height = SabjList.Height + 50
SendMessage MsgTextBox.hwnd, WM_SETREDRAW, 1, &O0
Form_Resize
End Select
Case vbAltMask 'ALT
Select Case KeyCode
Case vbKeyP 'настройки
cmdShowOptionsForm_Click
End Select
End Select
End Sub
Case vbKeyReturn 'открыть в FIPS
StartFips MSGIDinText, "C:\FIPS"
alibek писал(а):А не проще ловить _KeyAscii (KeyAscii = 10)?
tyomitch писал(а):10 - это что-то странное... Может, всё же 13?
И ещё не _KeyAscii, а _KeyPress.
А Ctrl-Enter обычно перехватывается многострочным текстбоксом, если у него фокус. У Ruslan-а, наверное, именно так?
Vitaly1 писал(а):Внутри keydown:
shift = 2 and keycode =13 - это ctrl+enter
tyomitch писал(а):10 - это что-то странное... Может, всё же 13?
И ещё не _KeyAscii, а _KeyPress.
tyomitch писал(а):Как-как, субклассить
На самом деле, там всё должно быть довольно легко.
Подожди, как исходников нет? А это не они - http://www.vbaccelerator.com/home/VB/Co ... Source.asp ?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1