Вниз
Скачать: CL | DM;

Вопрос по OnKeyDown и SetFocus;   Найти похожие ветки 

 
Cosinus ©   (2002-10-10 10:39) [0]

Уважаемые господа у меня возникли два ,наверное простых для Вас вопроса, но все же если не затруднит, ответьте ,плз. Есть форма на которой лежит несколько кнопок, типа <,>,<<,>> (выполняющие роль прокрутки). Изначально при нажатии на клавишу , например, левой стрелки, хотелось чтобы курсор сдвинутся на какое-то значение соответственно влево. А теперь , собственно, вопросы.
1) Про OnKeyDown в helpe написано, что событие посылается компоненту, имеющиму фокус. Как мне сделать, чтобы при нажатии этой клавиши над ЛЮБЫМ компонентом (т.е. над всей формой, но не за ее границами)запускалась нужная мне функция? Все что мне приходит в голову - это либо на каждый компонент делать проверку onkeypress, либо SetFocus на какой то один компонент, делать прорверку и setfocus обратно(но по-моему это прямо скажем не очень вариант :)). Может winapi-шное что то есть, вроде я что то такое помню или я не прав?
2)Даже когда я вручную в run-time устанавливаю фокус (кликаю мышкой :)) допустим на кнопку "влево" и жму клавишу с соответствующим кодом ничего не происходит, почему?
Вот отрывок кода:
var pt:tpoint;
begin
GetCursorPos(pt);
If Key=37 then setcursorpos(pt.x+20,pt.y);
end;

Возможно я условие не на то ставлю?
Не ругайте плз, и заранее спасибо. :)


 
Alx2 ©   (2002-10-10 10:48) [1]

По 1-му п.: Напиши один на всех OnKeyDown.
Например

Button1.OnKeyDown := MyOnKeyDown;
Button2.OnKeyDown := MyOnKeyDown;
.........
Button2002.OnKeyDown := MyOnKeyDown;

или в инспекторе всем участникам концерта раздай один MyOnKeyDown


 
Song ©   (2002-10-10 10:57) [2]

1.TApplication.onMessage или TForm.onKeyDown с TForm.KeyPreview
2.Я так и не понял..


 
Cosinus ©   (2002-10-10 11:06) [3]

>Song ©
Не сдвигается курсор и все тут. OnKeyDown отрабатывается, а курсор не двигается. Код кнопки влево : 37.

>Alx2 © >Song © Спасибо, сеячас попробую


 
Song ©   (2002-10-10 11:08) [4]

Используйте предопределённые константы. VK_LEFT например.


 
cosinus ©   (2002-10-10 11:17) [5]

>Song © VK_LEFT не проходит. Я , собственно, забыл еще один вопрос, возможно самый главный. Как мне сделать, чтобы при нажатии кнопок со стрелками фокус не прыгал по кнопкам, как при TAB? TabStop:=false помог только с табом.


 
Skier ©   (2002-10-10 11:20) [6]

>cosinus
CM_DIALOGKEY ?


 
Song ©   (2002-10-10 11:29) [7]

Опять же или Skier (10.10.02 11:20) или TApplication.onMessage


 
cosinus ©   (2002-10-10 11:49) [8]

>Skier©,Song© Спасибо



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
4-69059
Василий2
2002-09-06 17:43
2002.10.21
Как заблокировать файл?


3-68678
Dimedrol
2002-09-27 15:59
2002.10.21
Как раскрасить ROWS! в DBGrid-e ?


7-69040
Maxim Zemskov
2002-08-08 21:48
2002.10.21
Модем


7-69033
Бахус
2002-08-10 16:43
2002.10.21
Как узнать серийный номер железа


14-68988
Igor_thief
2002-09-29 15:17
2002.10.21
ListView




   Наверх