![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Регистрация: 22.08.2011
Сообщений: 7
|
![]()
это конечно все супер программа пошла без траблов, но если я делаю например
KeyCode:=25 то ничего не происходит т.е. персонаж не двигается НО активность окна перестала пропадать, если KeyCode:=VK_LEFT то выскакивет сабж и в нем написано "37" активнасть при этом пропадает, вот блин( |
![]() |
![]() |
![]() |
#12 |
Форумчанин
Регистрация: 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('нажата кнопка влево!'); сообщите об успехах и мы продолжим наше увлекательнейшее путешествие в мир цифровых технологий! |
![]() |
![]() |
![]() |
#13 |
Регистрация: 22.08.2011
Сообщений: 7
|
![]()
это все хорошо но если я это напишу мне просто будет выскакивать окошко в котором написан либо код кнопки либо другая хрень, а выполнение действия не происходит, этого я добился и в предыдущим посте, но как выполнить действие, а не посмотреть месагу??? Павда я ещ не пробывал это писать, просто на работе. У меня была попытка sendmessage(webbrowser....) но тоже ничего, хотя как я понимаю, я посылал сообщение браузеру.. Вообщем опять тупик... Спасибо большое что все мне объясняете)))
Последний раз редактировалось Almagel; 24.08.2011 в 15:15. |
![]() |
![]() |
![]() |
#14 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
![]()
ну простой способ я вам уже подсказал - уберите с формы все, кроме WebBrowser,
но вы решили пойти по сложному пути... что ж, похвально. и я советовал вам подключить логику. я надеюсь что вы все-таки это сделаете и тогда поймете, что вместо ShowMessage(); вы можете выполнять любое действие, главное - когда оно будет выполняться! по нажатию кнопок! т.е. вы нажали кнопку и будет выполняться та процедура, которую вы напишете вместо ShowMessage(); если вы это поняли, и сможете сделать так, чтобы при нажатии на кнопку видеть не месагу, а например, изменить заголовок формы - поздравляю, вы научились обрабатывать события! это была первая часть моего коварного плана - поймать событие. вы, я надеюсь, уже научились реагировать на нажатие конкретных клавиш. теперь вопрос в том, как отправить соответствующее сообщение в WebBrowser. а вот тут мои знания плавно стремятся к нулю =))) знаю только что есть Win Api, а в нем есть функция SendMessage, ну и еще пару-тройку деталей, которые вам мало чем помогут, так что советую самостоятельно погуглить про отправку сообщений, либо ждать пока у меня до этого руки дойдут ![]() сцылку бы еще кинули на игруху для которой вы делаете... |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |