Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83

Не вызывается событие при нажатии кнопки

25.11.2011, 19:47. Показов 4416. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ошибка вероятно глупая, но не реагирует на кнопки.

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
27
void __fastcall TForm1::FormKeyPress(TObject *Sender, wchar_t &Key)
{
  ShowMessage("кАсмчс а");
  int n,m;
  for (int i = 0; i < 4; i++) {
    for (int j = 0; j <4; j++) {
      if (mas[i][j]==0) {n=i;m=j;break;}
    }
  }
  if (Key=38) {
    if ((n+1)<4) {
      swap(mas[n][m],mas[n+1][m]);
      SwapBlocks(n+1,m,n,m);
      s+=1;
      Label2->Caption=IntToStr(s);
      if (IsVictory()) {
        IfWin();
      }
      return;
    }
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
  ShowMessage("dsafds");
}
KeyPreview установлено на true;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.11.2011, 19:47
Ответы с готовыми решениями:

Событие при нажатии кнопки мыши на ячейку таблицы
Как сделать так что-бы при нажатии кнопки мыши на ячейку таблицы выполнялось какое нибудь действие например написать в ней что нибудь.

Кнопки и событие при нажатии на них
Нужно сделать так,чтобы при нажатии на кнопку press me(134 стркоа кода) открывалось ещё одно окно с кнопками OK и cancel,при нажатии на...

Какое событие вызывается при нажатии клавиш
у меня такой вопрос как при помощи событий отследить нажатие кнопки ф1 и открыть форму 2 (это нужно сделать именно при помощи событий...

31
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
26.11.2011, 10:13  [ТС]
Студворк — интернет-сервис помощи студентам
А ну все, я просто поставил false у табстопов, и теперь он реагирует.

Добавлено через 15 минут
А хотя, не помогло, так как после нажатия кнопки, а затем стрелок, я опять перемещаюсь по ним
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
26.11.2011, 17:10
Цитата Сообщение от Saub Посмотреть сообщение
А хотя, не помогло, так как после нажатия кнопки, а затем стрелок, я опять перемещаюсь по ним
Удалите кнопки.
0
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
26.11.2011, 17:48  [ТС]
Отличное решение. Мб и прогу не стоит писать?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
26.11.2011, 18:04
Цитата Сообщение от Saub Посмотреть сообщение
Отличное решение. Мб и прогу не стоит писать?
Мб и не стоит, нам то откуда знать, что и зачем у вас происходит. Ибо может пока пользователь текст набирает, у вас скрепка пляшет, а может током бьет пользователя, а может вообще не набирает, а может вообще не пользователь. Вы что хотите услышать, когда пишите, что стандартные компоненты вас обыграли? Перечислять все варианты на угад - жизни может не хватить, поэтому я выбрал самый неприемлимый и нелогичный с глупой надеждой, что вы все-таки добавите немного описания к вашей проблеме. И тогда вам можно будет подсказать реализацию. Без описания, могу посоветовать перехватывать все сообщения нажатия клавишь в программе, но опять, мб вам не нужно чтобы по кнопкам шел переключатель, а может мы все уже давно...
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
26.11.2011, 20:18
Saub, Вы не обижайтесь, но утерян интерес к Вашей теме. Ошибка была в присвоении клавише статического значения (38), а затем, видимо пытаясь разобраться, Вы "дергали" различные свойства клавиш и скорее всего намутили туда столько!..., что единственный правильный выход - это разрубить гордиев узел. И своего опыта общения с Builder`ом я знаю, что далеко не все действия имеют "обратный ход"; то-есть даже если удалить текст, приведший к стопорной (ошибочной) ситуации, то все равно компонент остаётся "подпорченным". Почему так происходит я объяснить не берусь, но часто, переписав все прежние исправленные действия на "новый" компонент от проблемы удается избавиться. Впрочем, это только моё глубоко личное мнение.
0
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
26.11.2011, 20:42  [ТС]
Эм, я попытаюсь возразить, так как я сменил лишь значения табстопов у кнопок и все.

Добавлено через 2 минуты
А по сути вы вообще не правы, ибо я создал чистую форму, кинул 3 кнопки и в событие OnKeyDown закинул ShowMessage, и при нажатии на стрелки оно не вылетает, следовательно я не знаю как решить эту проблему, и по сути из всех ответивших никто не смог правильно ответить.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
27.11.2011, 00:00
Saub, я извиняюсь. Действительно, проблема есть и видимо простым путём её не решить. Хэлпы на KeyPreview пишут следующее:
Navigation keys (Tab, BackTab, the arrow keys, and so on) are unaffected by KeyPreview because they do not generate keyboard events.
Добавлено через 1 час 52 минуты
Можно попробовать определить "стрелки" как горячие клавиши. У меня, например, работает такая конструкция (для клавиши VK_UP):
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::FormCreate(TObject *Sender)
{ 
     RegisterHotKey(Handle,1,NULL,0x26);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
      bool &Handled)
{
      if ((Msg.message == WM_HOTKEY)&&(Msg.wParam == 1))
         ShowMessage("Нажата клавиша ВВЕРХ");
}
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
27.11.2011, 00:18
Цитата Сообщение от nick42 Посмотреть сообщение
...далеко не все действия имеют "обратный ход"; то-есть даже если удалить текст, приведший к стопорной (ошибочной) ситуации, то все равно компонент остаётся "подпорченным". Почему так происходит я объяснить не берусь, но часто, переписав все прежние исправленные действия на "новый" компонент от проблемы удается избавиться.
видимо , не обновляются объектные файлы (*.obj) , нередко помогает их самостоятельное удаление или Project->Clean project....
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
27.11.2011, 00:26
Но не в моем случае, - я, работая с проектом, регулярно "применяю" программку CleanUp, которая удаляет все времянки а также *.obj, *.tds, *.il*. Но "грабли" остаются.
0
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
27.11.2011, 10:22  [ТС]
значит можно попробовать совет nick42 либо просто воспользоваться другими кнопками.
0
8 / 8 / 3
Регистрация: 17.06.2011
Сообщений: 26
27.03.2012, 22:51
А вы уверено что проблема при нажатии клавиши вверх
как по мне так, это возможна с кодом:
C++
1
2
3
4
5
6
7
8
9
10
if ((n+1)<4) {
      swap(mas[n][m],mas[n+1][m]);
      SwapBlocks(n+1,m,n,m);
      s+=1;
      Label2->Caption=IntToStr(s);
      if (IsVictory()) {
        IfWin();
      }
      return;
    }
Я проверил это, у меня работает.
Попробуй написать такой код на событие формы(OnKeyDown):
C++
1
2
3
    if (Key==38) {
          ShowMessage("вы нажали клавишу вверх");
    }
В итоге если нажать клавишу вверх то выведется сообщение, если другая то ничего не выполнится.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.03.2012, 02:29
Ну а ShowMessage выскакивают?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2012, 02:29

Событие вызывается только при повторном нажатии.
После передачи данных, в скрипте должно открыться окно в стиле- ПИСЬМО ОТПРАЛЕНО, а сама форма должна пропасть. Но при кликаньи на мышке...

Не вызывается функция при нажатии кнопки
Добрый день господа программисты:) У меня возникла весьма не понятная ошибка, без вашей помощи не обойтись суть в том что есть форма ...

Repaint(): не вызывается при нажатии кнопки повторно
при вызове actionPerformed() куб не пропадает при повторном нажатии, почему не происходит repaint()? public class panel_1 extends...

При нажатии правой кнопки мыши не вызывается контекстное меню
Иногда появляется баг когда контекстное меню не открывается наяву. Обычно я решал это перезагрузкой компьютера до следующего появления, но...

Событие при нажатии на кнопки в цикле
Всем привет! Можно ли как-нибудь создать цикл в котором при нажатии на кнопку будет открыватся текстовый файл? У меня 30 текстовых...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru