Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2008, 10:57   #1
Fenix_Elite
 
Регистрация: 22.11.2008
Сообщений: 4
По умолчанию Клавиатура

Здраствуйте, я новичок в програмировании и столкнулся с проблемой, мне нужно что бы при нажатии на клавишу(пусть будет стрелка влево) BitBtn перемещался, я написал

Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if key = 37 then BitBtn1.Left:=  BitBtn.Left+5;
 end;
и при нажатии на Стрелку ничего не пройсходит, просто фокус(ну пунктирная линия вокруг кнопки) переходит с одно кнопки на другую. KeyPreview=True
Подскажите что делать? и еще вопрос срузу что сделать что бы убрать эту пунктирную линию, и что бы BitBtn не изменялся при нажатии
Fenix_Elite вне форума Ответить с цитированием
Старый 22.11.2008, 12:37   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Событие OnKeyDown не выполняется при нажатии стрелок.
Кинь на форму компонент ApplicationEvents с вкладки Additional и для события OnMessage создай следующий обработчик:
Код:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if (Msg.message = WM_KEYDOWN) and (Msg.wParam = 37) then
    BitBtn1.Left:=BitBtn1.Left+5;
end;
_Dmitry вне форума Ответить с цитированием
Старый 22.11.2008, 19:43   #3
Fenix_Elite
 
Регистрация: 22.11.2008
Сообщений: 4
По умолчанию

Блин щас хз что делать, мне нужно что если left у bitbtn > 100 то при нажатии на левую стрелку ничего не происходило, пробовал писать App..events1.Destroy вроде работает, но теперь вопрос как возобновить эту процедуру при нажатии допустим на кнопку1, пробовал Activate эфекта нет=(
Fenix_Elite вне форума Ответить с цитированием
Старый 22.11.2008, 19:47   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Проверяйте все условия в одном обработчике:
Код:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if (Msg.message = WM_KEYDOWN) and (Msg.wParam = 37) then
    if BitBtn1.Left <= 100 then BitBtn1.Left:=BitBtn1.Left+5;
end;
_Dmitry вне форума Ответить с цитированием
Старый 22.11.2008, 20:37   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Событие OnKeyDown не выполняется при нажатии стрелок.
Позволю себе не согласиться с вами, коллега.
Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (key=VK_LEFT) then
Button1.Left:=Button1.Left-5;
end;
Если всем компонентам выставить свойство TabStop=False, то воспринимать это будет любой компонент, указанный в процедуре (в данном случае Button1).

Последний раз редактировалось mihali4; 22.11.2008 в 20:40.
mihali4 вне форума Ответить с цитированием
Старый 23.11.2008, 08:02   #6
Fenix_Elite
 
Регистрация: 22.11.2008
Сообщений: 4
По умолчанию

Это работает до первого нажатия на любую кнопку, потом стрелка просто типа как подсвечивает кнопки пунктиром
Fenix_Elite вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экранная клавиатура aesoem Софт 9 13.03.2009 10:59
Клавиатура RealSHELS Общие вопросы Delphi 6 29.03.2008 15:52
Клавиатура Pusher Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 22.03.2008 00:47
Клавиатура и мышь Борис2 Паскаль, Turbo Pascal, PascalABC.NET 4 11.12.2007 23:32
клавиатура с Delphi Илюха Общие вопросы Delphi 4 04.11.2007 19:20