Главная страница
    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.045 c
15-1184818917
THandle
2007-07-19 08:21
2007.08.19
На компьютере почему - то не работает звук


15-1184882265
Kostafey
2007-07-20 01:57
2007.08.19
Поиск в Access - базе


3-1177566685
MZ
2007-04-26 09:51
2007.08.19
узнать количество суток между двумя датами в FireBird


2-1185130508
copron
2007-07-22 22:55
2007.08.19
GetNextItem


2-1185443276
ММК
2007-07-26 13:47
2007.08.19
Картинка





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский