Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1

Залипание клавиш

21.05.2011, 18:48. Показов 3093. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вообще создал я в OnKeyDown ветвление типо если нажать на стрелку влево то картинка начнёт двигаться влево. всё работает только есть одна проблема, при нажатии происходит некая задержка, т.е картинка вначале как бы дергается а после плавно передвигается, вот как сделать так чтобы движение картинки изначаально было плавно?

Добавлено через 3 минуты
Может просто нужно писать не в OnKeyDown???
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2011, 18:48
Ответы с готовыми решениями:

Залипание клавиш
Ребята ,помогите пожалуйста с таким вопросом: Вот проект:http://rghost.ru/39610610 Значит,вот нажмите нопку плэй(она мигает после...

Залипание в игре
Здравствуйте, у меня какя то однопроцессорная игра получается, если я нажму на кнопку пробел у меня вылетел пуля но стоит мне нажать на...

Залипание клавиш
Продолжаю клавиатурную тему :) Есть прога, которая показывает нажатые клавиши (т.е. жмём все 4 стрелки – видим, что все 4 нажаты,...

16
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
21.05.2011, 18:52
Выложите код, фиг понятно, как вы это реализовали
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
21.05.2011, 20:07  [ТС]
вот код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
 
{
switch(Key)
{
    case VK_LEFT: Image1->Left-=10; break;
    case VK_RIGHT: Image1->Left+=10; break;
}
}
//---------------------------------------------------------------------------
1
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
21.05.2011, 22:17
Тут лучше при KeyDown запускать таймер, которые каждые н секунд будет двигать нужный элемент, а при KeyUp - вырубать его
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
21.05.2011, 22:43  [ТС]
Код в студию если не трудно
0
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
21.05.2011, 22:45
GoldDragon, там же компоненты, вам все равно самому писать прийдется. Что идейно не понятно?
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
21.05.2011, 22:51  [ТС]
iama напиши сюда код как сделать движение с помощью KeyDOWN и KeyUP для кнопок LEFT и RIGHT

Добавлено через 1 минуту
ну тогда вот код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
 
{
switch(Key)
{
    case VK_LEFT: i--; Timer1->Enabled=true; break;
    case VK_RIGHT: i++; Timer1->Enabled=true; break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
switch(Key)
{
    case VK_LEFT: Timer1->Enabled=false; break;
    case VK_RIGHT: i++; Timer1->Enabled=false; break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Image1->Left=3;
}
отредактируй его так как нужно....
1
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
21.05.2011, 22:54
C++
1
int pressed_key;
Это обьяви глобально

Цитата Сообщение от GoldDragon Посмотреть сообщение
C++
1
2
3
4
5
switch(pressed_key)
 {
 case VK_LEFT: Image1->Left-=10; break;
 case VK_RIGHT: Image1->Left+=10; break;
 }
вот это - в myTimerOnTimer

C++
1
pressed_key = Key;
Это - в KeyDown

C++
1
pressed_key; = -1;
Это - в KeyUp
1
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
21.05.2011, 23:07  [ТС]
просто не охота ещё один Timer создавать для клавиши RIGHT уж очень большая прога будет....

Добавлено через 7 минут
Ну вот всё работает) спасибо)
1
14 / 14 / 4
Регистрация: 27.10.2012
Сообщений: 141
28.10.2012, 20:14
Цитата Сообщение от GoldDragon Посмотреть сообщение
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
switch(Key)
{
case VK_LEFT: Image1->Left-=10; break;
case VK_RIGHT: Image1->Left+=10; break;
}
}
//---------------------------------------------------------------------------
помогите! вообще не хочет запускаться, пишет постоянно [C++ Error] Unit1.cpp(18); E2316 '_fastcall TForm1::FormKeyDown(Tobject*,unsigned short &,TShiftState)' is not a member of'TForm1'
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.10.2012, 20:52
Зайди в события формы и найди там KeyDown и кликни туда....

P.S. Не стоит тупо копипастить код который генерит IDE, если не понимаешь сути её работы
1
14 / 14 / 4
Регистрация: 27.10.2012
Сообщений: 141
28.10.2012, 20:52
уже работает, запускается с помощью
C++
1
void __fastcall KeyDown(WORD &Key)
Цитата Сообщение от Avazart Посмотреть сообщение
Зайди в события формы и найди там KeyDown и кликни туда....
P.S. Не стоит тупо копипастить код который генерит IDE, если не понимаешь сути её работы
спасибо за совет, пока я ещё нуб
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.10.2012, 20:54
Цитата Сообщение от ithyphallic Посмотреть сообщение
уже работает, запускается с помощью
Ну не верю...
0
14 / 14 / 4
Регистрация: 27.10.2012
Сообщений: 141
28.10.2012, 20:56
ну в смысле запускается теперь...пока не сделал то что хотел, но это уже другая проблема)
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.10.2012, 21:02
Кликни в ячейку среда с генерит обработчик туда и впишиш свой код
Миниатюры
Залипание клавиш  
1
14 / 14 / 4
Регистрация: 27.10.2012
Сообщений: 141
28.10.2012, 21:22
аааааааааа!!!!! спасибо, реально помог! все оказалось проще, чем можно было предположить)
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.10.2012, 21:30
Читай книгу Архангельского 7издание, ну что нибудь по ООП в С++ для начала.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.10.2012, 21:30
Помогаю со студенческими работами здесь

Залипание клавиш
Добрый день, думаю тут помогут быстрее чем ТП skype. Я инвалид и использую залипание клавиш. Для удобства я установил программу...

Залипание клавиш
Всем привет, помогите с таким вопросом, хочу сделать глобальное залипание клавиш &quot;Shift&quot; и &quot;W&quot; как можно реализовать...

Включается залипание клавиш
в панели управления полностью отключено любое залипание клавиш, но к примеру когда я играю или пишу текст начинает случайно пикать клава (...

Залипание некоторых клавиш
Проблема такая: время от времени происходит залипание клавиш само по себе. Например ctrl или WIN, когда в браузере прокручиваю страницу...

Как откючить залипание клавиш?
При пятикратном нажатии на shift появляется окошко настройки залипания клавиш мне необходимо его программно убрать. То есть мне по сути...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru