Форум: "Начинающим";
Текущий архив: 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.49 MB
Время: 0.063 c