Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по обработке события 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 унаёте код


Наверх

Титульная страница Поиск, карта сайта Написать письмо