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

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

21.05.2011, 18:48. Показов 3080. Ответов 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
8488 / 6155 / 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
8488 / 6155 / 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
8488 / 6155 / 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
8488 / 6155 / 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 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru