Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Здраствуйте, я новичок в програмировании и столкнулся с проблемой, мне нужно что бы при нажатии на клавишу(пусть будет стрелка влево) 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, 13:37   #2
_Dmitry
Профессионал
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
Репутация: 776
По умолчанию

Событие 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, 20:43   #3
Fenix_Elite
 
Регистрация: 22.11.2008
Сообщений: 4
Репутация: 10
По умолчанию

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

Проверяйте все условия в одном обработчике:
Код:

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, 21:37   #5
mihali4
*
Профессионал
 
Регистрация: 22.11.2006
Адрес: Москва
Сообщений: 9,198
Репутация: 2661
По умолчанию

Цитата:
Событие 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 в 21:40.
mihali4 вне форума   Ответить с цитированием
Старый 23.11.2008, 09:02   #6
Fenix_Elite
 
Регистрация: 22.11.2008
Сообщений: 4
Репутация: 10
По умолчанию

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экранная клавиатура aesoem Софт 9 13.03.2009 11:59
Клавиатура RealSHELS Общие вопросы Delphi 6 29.03.2008 16:52
Клавиатура Pusher Assembler 0 22.03.2008 01:47
Клавиатура и мышь Борис2 Паскаль 4 12.12.2007 00:32
клавиатура с Delphi Илюха Общие вопросы Delphi 4 04.11.2007 20:20




11:49.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
лучший хостинг
Выбираем лучший хостинг: рейтинг ТОП 10
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru