Перешёл из паскаля в делфи
столкнулся с проблемой:
в паскале при нажатии кнопки считывал символ так: if KeyPressed then ch:=ReadKey;
В делфи такое что то не катит пишет Undeclared identifier...
Как мне реализовать это в Делфях подскажите.
![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
![]() ![]() |
![]() |
Morfey85 |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
Перешёл из паскаля в делфи
столкнулся с проблемой: в паскале при нажатии кнопки считывал символ так: if KeyPressed then ch:=ReadKey; В делфи такое что то не катит пишет Undeclared identifier... Как мне реализовать это в Делфях подскажите. |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Здесь глянь:
Crt в дельфи |
Morfey85 |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо, но я бы хотел узнать как в делфи реализовано перехват кода клавиатуры в программу.
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Ну, это смотря чем ты пользуешься. Если используешь VCL - то есть событие OnKeyPress. Если WinAPI - то немного по-другому...
|
Morfey85 |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
VCL я думаю, в WinAPI лезть пока боюсь.
OnKeyPress это событие. Что мне делать если в бесконечном цикле , я должен при нажатии калвиши либо выйти из цикла либо изминить какие то переменные? Чесно говоря пишу игру. Грубо говоря у меня идет процесс падения какогото "шарика". В процесс падения я хочу поменять фон (использую TImage) при нажатии стрелочек на клавиатуре. Сообщение отредактировано: Morfey85 - |
мисс_граффити |
![]()
Сообщение
#6
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
я в змейке писала так:
procedure TForm1.KeyDown(Sender: TObject; var Key: Word; то есть при нажатии стрелки менялось направление змейки. мне кажется, тебя что-то подобное должно устроить... но это все равно обработчик события. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Morfey85 |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
procedure TForm1.KeyDown(Sender: TObject; var Key: Word; это меня утраивает есть только одно НО. У меня в прецессе игры идет бесконечный цикл падения "шариков" и в процессе его выполнения я не могу обработать событие KeyDown. Подскажите либо как мне обработку клвиатуры сделать внутри цикла либо как сделать так чтобы шарики падали сами по себе, в то время как я мог бы выполнять другие действия. |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Добавь Application.ProcessMessages в цикле, и ты сможешь реагировать на нажатия клавиш тоже...
|
мисс_граффити |
![]()
Сообщение
#9
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
а как цикл реализован? может, сделать привязку к таймеру?
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Morfey85 |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
Application.ProcessMessages помогло. Только я теперь из цикла выйти не могу и из програмы тоже пока не нажму Еsc(k:=5) и только потом могу выйти.
procedure TForm1.N2Click(Sender: TObject); Что там нащет Таймера?. Кому интересно что я вообще намучил можете скачать посмотреть тут может что посоветуете. Сообщение отредактировано: volvo - |
Morfey85 |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
Всем спасибо за помощь. Везде разобрался, игру дописал.
Если хотите окончательный вариант можно скачать тут |
мисс_граффити |
![]()
Сообщение
#12
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
что НЕ понравилось:
момент первый - принципиальный. мерзкое мерцание. сделай так: procedure TForm1.FormCreate(Sender: TObject); и будет замечательно момент второй - менее значительный. пользователю незаметный.... procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; немножко смущает выбор по кодам (39, 40...). может, это я дура, но коды всех клавиш не помню. напиши лучше vk_down, vk_up... имхо, будет лучше читаться. или у твоего варианта есть преимущества, просто я не знаю? Таймеров, я так понимаю, уже сам понапихал, на вопрос ("Что там нащет Таймера?") можно не отвечать? вообще игра порадовала... воспоминания из раннего-раннего детства ![]() -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
![]() |
Текстовая версия | 1.10.2023 22:22 |