Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];

Вниз

Как отследить нажатие комбинации клавиш?   Найти похожие ветки 

 
wWwWw   (2007-07-20 11:54) [0]

Как отследить нажатие комбинации клавиш, например:
Alt + Shift +D
???


 
Dib@zol ©   (2007-07-20 11:58) [1]

GetAsyncKeyState()? В обработчике нажатия клавиши проставляем через AND три вызова Get<>0.


 
MsGuns ©   (2007-07-20 12:05) [2]

Самый простой способ - добавить TAction с этим шорткатом, а в обработчике написать нужный код


 
wWwWw   (2007-07-20 12:41) [3]

А мне казалось, что я где-то видел процедуру отслеживания нажатия клавиш, похожую на:
if Key in ["0".."9"] then ...

или всё-же GetAsyncKeyState?


 
Dib@zol ©   (2007-07-20 12:45) [4]


> или всё-же GetAsyncKeyState?

стопудово :)


 
umbra ©   (2007-07-20 12:49) [5]

события OnKeyDown или OnKeyUp


 
wWwWw   (2007-07-20 13:01) [6]

> umbra ©   (20.07.07 12:49) [5]
Да, да! Именно это я и видел! Вот, снова нашёл:

procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if Key = VK_escape then ShowMessage("ok");
end;


Но как здесь задать комбинацию клавиш?
И у кнопок-букв нет никаких VK_...


 
Dib@zol ©   (2007-07-20 13:08) [7]

Тебе екзампл чтоли нужен? На лови:

function KeyDown(key:Word):boolean;
begin
result:=GetAsyncKeyState(key)<>0;
end;

procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (keyDown(VK_CONTROL))and(keyDown(VK_SHIFT))and(keyDown(ord("D"))) then ShowMessage("Поймал!!!");
end;


 
wWwWw   (2007-07-20 13:09) [8]

> Dib@zol ©   (20.07.07 13:08) [7]
огромное спасибо!


 
Zagaevskiy ©   (2007-07-20 13:11) [9]

так это ж на кнопке только, чо ему на всех элементах делать чтоль?


 
wWwWw   (2007-07-20 13:21) [10]

Чё-то пишет:
Types of actual and formal var parameters must be identical на (VK_CONTROL)
Types of actual and formal var parameters must be identical на (VK_SHIFT)
Types of actual and formal var parameters must be identical на (ord("D"))

Что не так?


 
umbra ©   (2007-07-20 13:41) [11]


> Но как здесь задать комбинацию клавиш?

для этого есть параметр shift. Для букв VK_буква = ord(буква).
Но все это, собственно, есть в справке по этим событиям


 
Anatoly Podgoretsky ©   (2007-07-20 13:43) [12]

> wWwWw  (20.07.2007 13:01:06)  [6]

Параметр Shift


 
wWwWw   (2007-07-20 15:49) [13]

я запутался:
uVirtKey = VK_F10
Ord(Key):=KEY_CTRL_B
ssCTRL in Shift
if (Key=67) and (Shift=ssCtrl)


Когда: VK_SHIFT, когда SHIFT, когда Ord(SHIFT), когда: ssSHIFT???

у меня постоянно одна и та-же ошибка:  Incompatible types
Как же правильно написать Alt + Shift +D в процедуре: KeyDown формы?


 
Anatoly Podgoretsky ©   (2007-07-20 16:00) [14]

> wWwWw  (20.07.2007 15:49:13)  [13]

Это вообще какой то дикий синтаксис, начиная с первой строчки.
Вообще то должно ругаться по поводу синтаксиса, а не типов, видимо еще где то выше ошибка и до этих строк дело не дошло.


 
wWwWw   (2007-07-20 16:08) [15]

procedure TFormUstr.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 ... //см. ниже
 then ShowMessage("Ok!!!");
end;

Я пробовал так:
if (Key=Ord("D")) and (Shift=VK_SHIFT) and (Shift=VK_MENU)
я пробовал так:
if (keyDown(VK_MENU)) and (keyDown(VK_SHIFT)) and
(keyDown(ord("D")))

я пробовал так:
if Key=D_SHIFT_Alt ..что вроде этого было
КАК ЖЕ ПРАВИЛЬНО?


 
iXT ©   (2007-07-20 16:14) [16]

> КАК ЖЕ ПРАВИЛЬНО?

Справку все-таки почитать


 
wWwWw   (2007-07-20 16:33) [17]

Справку все-таки почитать

так я по справке всё это и пробовал!


 
iXT ©   (2007-07-20 16:41) [18]

Не верю (С)


 
Anatoly Podgoretsky ©   (2007-07-20 16:43) [19]

> wWwWw  (20.07.2007 16:33:17)  [17]

Читать про множества, а примеры в Дельфи по данной части вполне адекватные.


 
wWwWw   (2007-07-20 17:21) [20]

Похоже дело не в неправильном написании!
Я буковка в буковку переписываю то - что в справке:
if (ssShift in Shift) and (Key = ord("Y")) then
Но при нажатии на эти клавиши не получаю ничего, кроме писка из системного динамика!

Что это? - Конфликт с какой-то процедурой?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.05 c
15-1184924724
Ega23
2007-07-20 13:45
2007.08.19
Рыдал... :)))))


15-1184961545
Bogdan1024
2007-07-20 23:59
2007.08.19
Интернет-провайдеры в Киеве


15-1184735259
Notebook
2007-07-18 09:07
2007.08.19
Как перезагрузить ноутбук?


9-1157985874
Kobik.
2006-09-11 18:44
2007.08.19
Орех какой-то :)


15-1185187119
Kolan
2007-07-23 14:38
2007.08.19
SVNTortoise как добавить в игнор лсит?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский