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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2011, 01:49   #11
Almagel
 
Регистрация: 22.08.2011
Сообщений: 7
По умолчанию

это конечно все супер программа пошла без траблов, но если я делаю например

KeyCode:=25 то ничего не происходит т.е. персонаж не двигается НО активность окна перестала пропадать,
если
KeyCode:=VK_LEFT то выскакивет сабж и в нем написано "37" активнасть при этом пропадает,

вот блин(
Almagel вне форума Ответить с цитированием
Старый 24.08.2011, 09:45   #12
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

хаха, веселите меня от души ))
а чего вы хотели от KeyCode:=25; ?
даже если не учитывать что 25 - здесь чисто мой креатифф, т.е. от балды,
чего вы хотели добиться присваивая переменной типа integer значения 25?

эх, ну ладно, открываем он-лайн рубрику Delphi Шаг за Шагом...
первое что нам нужно - это логика.
поэтому вооружившись логикой начинаем анализировать,
что мы понаписали и как это должно работать.
Отлично!
у нас уже есть с горем-пополам написанная процедура Bugoga.
давайте теперь все вместе дружно подумаем как она работает!

Как я уже говорил, неведомая ё****я хрень запускает эту процедуру
при возникновении какого-либо события в программе, например - нажатие клавиши.
Мало того, она не просто запускает процедуру, но и передает туда два параметра! (восхитительно!)
Один из этих параметров Msg типа TMsg.
Давайте теперь все вместе дружно посмотрим, что же это за параметр!...
хотя впрочем не суть, главное что есть у этого параметра такие свойства как
message и wParam, доступ к которым осуществляется с помощью
msg.message и msg.wParam соответственно.

первое свойство msg.message содержит константу,
которая говорит нам, какое именно событие произошло,
например wm_keyDOWN - нажата клавиша, wm_keyUP - отпущена клавиша
(напомню что имена переменных в Delphi являются регистроНЕзависимыми, т.е. wm_keydown = WM_KeyDown)

второе свойство msg.wParam содержит некоторые подробности (тип integer)
произошедшего события. Например, если мы знаем что была нажата клавиша,
мы, скуко, требовательные, нам этого мало, мы хотим знать какая клавиша была нажата!
а узнать мы это можем как раз из параметра msg.wParam.
в случае если произошло событие wm_keydown или wm_keyup,
это свойство содержит код клавиши, которая была нажата/отпущена соответственно.

Логика все еще при нас?
В таком случае напомните ка мне, что мы имеем, когда нажимаем клавишу?
хотя не надо, я лучше сам...
мы имеем запуск процедуры Bugoga,
в которой msg.message имеет значение wm_keydown,
а msg.wParam имеет значение кода нажатой клавиши, например 38.

далее перевожу на русский вот эту строчку:
if (msg.message = wm_keydown) and (msg.wParam = keyCode) then ShowMessage(inttostr(msg.wParam));
если (событие = нажата_клавиша) и если (код клавиши = 25) то ПоказатьСообщение(код клавиши);

вам это о чем-нибудь говорит?
коды стрелок вам в принципе известны: VK_LEFT и т.д.
вот и сравнивайте коды нажатых клавиш с кодами стрелок.
я даже мягко намекну:
if (msg.message = wm_keydown) and (msg.wParam = VK_LEFT) then ShowMessage('нажата кнопка влево!');

сообщите об успехах и мы продолжим наше
увлекательнейшее путешествие в мир цифровых технологий!
xrob вне форума Ответить с цитированием
Старый 24.08.2011, 15:13   #13
Almagel
 
Регистрация: 22.08.2011
Сообщений: 7
По умолчанию

это все хорошо но если я это напишу мне просто будет выскакивать окошко в котором написан либо код кнопки либо другая хрень, а выполнение действия не происходит, этого я добился и в предыдущим посте, но как выполнить действие, а не посмотреть месагу??? Павда я ещ не пробывал это писать, просто на работе. У меня была попытка sendmessage(webbrowser....) но тоже ничего, хотя как я понимаю, я посылал сообщение браузеру.. Вообщем опять тупик... Спасибо большое что все мне объясняете)))

Последний раз редактировалось Almagel; 24.08.2011 в 15:15.
Almagel вне форума Ответить с цитированием
Старый 24.08.2011, 15:53   #14
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

ну простой способ я вам уже подсказал - уберите с формы все, кроме WebBrowser,
но вы решили пойти по сложному пути... что ж, похвально.
и я советовал вам подключить логику.

я надеюсь что вы все-таки это сделаете и тогда поймете,
что вместо ShowMessage(); вы можете выполнять любое действие,
главное - когда оно будет выполняться! по нажатию кнопок!
т.е. вы нажали кнопку и будет выполняться та процедура, которую вы
напишете вместо ShowMessage();

если вы это поняли, и сможете сделать так,
чтобы при нажатии на кнопку видеть не месагу, а например,
изменить заголовок формы - поздравляю, вы научились обрабатывать события!

это была первая часть моего коварного плана - поймать событие.
вы, я надеюсь, уже научились реагировать на нажатие конкретных клавиш.
теперь вопрос в том, как отправить соответствующее сообщение в WebBrowser.
а вот тут мои знания плавно стремятся к нулю =)))
знаю только что есть Win Api, а в нем есть функция SendMessage,
ну и еще пару-тройку деталей, которые вам мало чем помогут,
так что советую самостоятельно погуглить про отправку сообщений,
либо ждать пока у меня до этого руки дойдут

сцылку бы еще кинули на игруху для которой вы делаете...
xrob вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WebBrowser нажатие на кнопку отправки Bug_Q Работа с сетью в Delphi 4 06.02.2011 20:43
webbrowser и кнопка в нем, нажатие - действие grafgrial Общие вопросы Delphi 6 08.12.2010 14:03
Стрелки ddeman666 Помощь студентам 0 16.05.2010 12:04
Долгое нажатие клавиши в KeyDown как одно нажатие marina15056 Общие вопросы Delphi 7 16.08.2009 00:22
Анимирование стрелки... kentlm Мультимедиа в Delphi 2 14.05.2009 02:17