![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по обработке события OnKeyUp [D5, Win95/98]
Ray_Parker © (2002-04-12 17:41:00)Привет.
Может кто-нибудь сможет подсказать, как определить через событие OnKeyUp сочетание "Ctrl+<". Пробовал уже:
-Ord(",")
-Ord("<")
-Ord("б")
-Ord("Б")
-даже через ASCII-число
ничего не получается. Если можно, присылайте ответ на мыльницу:
ray_parker@newmail.ru
Ray_Parker (2002-04-14 14:32:00) [1]Спасибо, Song, Ваш код работает на все 100!
Song (2002-04-14 11:32:00) [2]2Ray_Parker (14.04.02 11:05)
Всё-таки, Вы меня заставили Дельфи загрузить :))
procedureTForm1.FormKeyDown(Sender: TObject; varKey: Word; Shift: TShiftState);
begin
IF (ssCtrl inShift) and(Key=188) thenShowMessage("Нажато Ctrl+<");
end;
Ray_Parker (2002-04-14 11:05:00) [3]Для Song:
Хорошо, кнопку "<" мы поймали, а как же определить тогда, что нажата Ctrl. Дело в том, что у меня предусмотрено два действия: первое на нажатие "<", а второе - на "Ctrl+<".
Ray_Parker (2002-04-14 11:02:00) [4]Для Anatoly Podgoretsky:
Что означает "Вывод в метку"?
Song (2002-04-13 20:28:00) [5]Действительно код Ctrl через onKeyPress посмотреть не удастся, а вот Ctrl+"<" легко... Я не стал уточнять, думал догадаетесь.
Anatoly Podgoretsky (2002-04-13 20:13:00) [6]Ну только вместо отладчика используй вывод в метку
Ray_Parker (2002-04-13 20:05:00) [7]Хммм... действительно. Очень интересная мысль.
Anatoly Podgoretsky (2002-04-13 19:13:00) [8]А ты не хочешь посмотреть значение отладчиком?
Ray_Parker (2002-04-13 19:04:00) [9]Для Song:
Мне именно нужно "Ctrl+<". Т.е. сначала необходимо вычеслить, что нажата Ctrl, а потом, что нажата "<". Ctrl через событие OnKeyPress вычислить не удается, поэтому единственный путь - через события OnKeyDown и OnKeyUp, а вот там-то и возникают проблемы с определением нажатия "<", в то же время с Ctrl проблем никаких нет.
Может еще что-нибудь придумаем...
Ray_Parker (2002-04-13 19:00:00) [10]Здравствуйте, Александр. Спасибо, что откликнулись.
Ваш код правильный, однако есть ньюансы:
1) Мне нужна кнопка "<" (знак меньше), а не стрелка влево ( VK_LEFT).
2) Насчет ssCtrl in Shift - это можно осуществить только в событии OnKeyUp или OnKeyDown, а в OnKeyPress нельзя, т.к. Shift отсутствует во входных параметрах.
3) Сочетание "Ctrl+<" нельзя поймать через события OnKeyUp или OnKeyDown, потому что для кнопки "<" нет виртуального значения (например, VK_<), а код Ord(",") не срабатывает - уже пробовал.
Может подумаем еще...
Александр С. (2002-04-13 11:45:00) [11]if not (ssCtrl in Shift)then exit;
if key = vk_Left then <собственно код>
Song (2002-04-13 10:29:00) [12]Вам-то нужно не Ctrl, Ctrl+"<"
Ray_Parker (2002-04-12 19:18:00) [13]Через OnKeyPress не получится, потому что там не обрабатывается кнопка Ctrl!
Song (2002-04-12 17:52:00) [14]через onKeyPress унаёте код