Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 26
1

Как можно присвоить клавишу к пунктам MainMenu

02.03.2012, 21:10. Показов 3442. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ка можно присвоить клавишу к пунктам MainMenu?
Например: в MainMenu есть пункты Новая игра и Выход я хочу чтобы действия этих пунктов осуществлялись при нажатии клавиш F2 и Esc. Подскажите как это можно реализовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2012, 21:10
Ответы с готовыми решениями:

Как обратиться к пунктам в MainMenu в конструкции IF Then Else?
Народ как обратиться к пункты в MainMenu в конструкции IF Then Else и указать что я нажимаю на...

Как назначить ShortCut динамически создаваемым пунктам меню MainMenu
Привет всем. Возле программы есть пользовательская папка с текстовыми файлами. При запуске проги...

Сделать неактивной клавишу MainMenu
Как сделать клавишу MainMenu неактивной при открытии формы?

Как можно заблокировать MainMenu?
Как можно заблокировать MainMenu? Меню должно быть видно,а не скрыто как в VISIBLE!!

26
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
02.03.2012, 21:43 2
C++
1
2
#define VK_F2 0x71
#define VK_ESCAPE 0x1B
C++
1
2
3
4
5
void __fastcall TForm1::N9Click(TObject *Sender)
{
//нажали кнопку "игра" в меню
игра началась...
}
На форме1 в Properties - KeyPrewiew=true

потом выбираешь Events - OnKeyUp и в пустой ячейке справа даблклик...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if (Key==VK_F2) 
{
ShowMessage("нажали f2");
N9Click->Click();
}
if (Key==VK_ESCAPE)
{
ShowMessage(" нажали Esc");
N*Click->Click();// вместо * номер кнопки... по аналогии как выше...
}
}
0
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 26
02.03.2012, 22:17  [ТС] 3
Цитата Сообщение от Limit-ED-itioN Посмотреть сообщение
#define VK_F2 0x71
#define VK_ESCAPE 0x1B

C++
1
2
3
4
5
6
void __fastcall TForm1::N9Click(TObject *Sender)
{
//нажали кнопку "игра" в меню
игра началась...
}
//---------------------------------------------------------------------------
На форме1 в Properties - KeyPrewiew=true

потом выбираешь Events - OnKeyUp и в пустой ячейке справа даблклик...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if (Key==VK_F2) 
{
ShowMessage("нажали f2");
N9Click->Click();
}
if (Key==VK_ESCAPE)
{
ShowMessage(" нажали Esc");
N*Click->Click();// вместо * номер кнопки... по аналогии как выше...
}
}
//---------------------------------------------------------------------------
при запуске программы билдер сразу ругается на начало ф-ции
0
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
02.03.2012, 22:29 4
что именно пишет?
0
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 26
02.03.2012, 22:51  [ТС] 5
Цитата Сообщение от Limit-ED-itioN Посмотреть сообщение
FormKeyUp
это что??

Добавлено через 19 минут
Цитата Сообщение от Limit-ED-itioN Посмотреть сообщение
что именно пишет?
[C++ Error] Unit1.cpp(20): E2316 '_fastcall TForm1::FormKeyUp(TObject *,unsigned short &,TShiftState)' is not a member of 'TForm1'
[C++ Error] Unit1.cpp(20): E2141 Declaration syntax error
[C++ Error] Unit1.cpp(30): E2190 Unexpected }
[C++ Error] Unit1.cpp(30): E2190 Unexpected }
0
LK
Заблокирован
02.03.2012, 22:53 6
Цитата Сообщение от mazahaka2401 Посмотреть сообщение
это что??
mazahaka2401, это - F1 .
И вот это
[C++ Error] Unit1.cpp(20): E2316 '_fastcall TForm1::FormKeyUp(TObject *,unsigned short &,TShiftState)' is not a member of 'TForm1'
надо не копировать и вставлять, а создать обработчик в инспекторе объектов и вставить туды код.
А вот это
[C++ Error] Unit1.cpp(30): E2190 Unexpected }
[C++ Error] Unit1.cpp(30): E2190 Unexpected }
- разберитесь со скобками - где, сколько, для чего, есть ли пара.
А если короче - надо книгу.
0
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 26
02.03.2012, 23:02  [ТС] 7
Цитата Сообщение от LK Посмотреть сообщение
mazahaka2401, это - F1 .
И вот этонадо не копировать и вставлять, а создать обработчик в инспекторе объектов и вставить туды код.
А вот это- разберитесь со скобками - где, сколько, для чего, есть ли пара.
А если короче - надо книгу.
хотелось бы поподробнее про обработчик.
0
LK
Заблокирован
02.03.2012, 23:07 8
Поподробнее:
Архангельский А.Я. Программирование в С++ Builder.
Есть в сети.
0
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 26
02.03.2012, 23:13  [ТС] 9
Цитата Сообщение от LK Посмотреть сообщение
Поподробнее:
Архангельский А.Я. Программирование в С++ Builder.
Есть в сети.
я конешно понимаю , что не всё легко даётся но мне сейчас это нужно по быстрому сделать.
нет времени читать книгу.
помоги пожалуйста, если ты разбираешься то у тебя это много времени не займёт.
0
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
02.03.2012, 23:18 10
С лева на екране 2 маленьких окошка, в нижнем - много параметров, внимательней прочти что я написал и сделай так же
0
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 26
02.03.2012, 23:19  [ТС] 11
Цитата Сообщение от Limit-ED-itioN Посмотреть сообщение
С лева на екране 2 маленьких окошка, в нижнем - много параметров, внимательней прочти что я написал и сделай так же
я знаю какие это 2 окошка я не понял с обработчиком.
0
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
02.03.2012, 23:20 12
Цитата Сообщение от mazahaka2401 Посмотреть сообщение
skype есть??? так проще будет общаться
может по телефону еще?!
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
02.03.2012, 23:21 13
Цитата Сообщение от mazahaka2401 Посмотреть сообщение
я конешно понимаю , что не всё легко даётся но мне сейчас это нужно по быстрому сделать.
нет времени читать книгу.
Тогда надо по-быстрому прочитать главу 5.3.2 События клавиатуры в указанной книге. Времени займет - максимум полчаса, крайне внимательно вчитываясь.
1
LK
Заблокирован
02.03.2012, 23:24 14
mazahaka2401, ну вот почему у меня нашлось время не только картинки посмотреть, но и прочитать большинство из 1000-с-чем-то страниц, а у вас нет?

По поводу обработчика:
- слева в Билдере есть Инспектор объектов
- в Инспекторе объектов есть вкладка Events/События
- в дизайнере кликаете на свободном месте в форме
- переходите на вкладку Events/События , которая уже отображает необходимые события для формы
- на этой вкладке должно быть что-нибудь со словами KeyUp
- делаете двойной клик мышью справа от этих слов
- в редакторе кода должны получить готовую заготовку - обработчик события OnFormKeyUp, вот такую:
C++
1
2
3
4
5
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
  //...
}
Вместо точек вставляете свой код.
0
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
02.03.2012, 23:25 15
захадиш в окошке - Events - OnKeyUp

(справа будут пустые ячейки), напротив OnKeyUp жмешь мышкой дваждыи открывается текст программ
вставляешь туда
C++
1
2
3
4
5
6
7
8
9
10
if (Key==VK_F2) 
{
ShowMessage("нажали f2");
N9Click->Click();
}
if (Key==VK_ESCAPE)
{
ShowMessage(" нажали Esc");
N*Click->Click();// вместо * номер кнопки... по аналогии как выше...
}
0
LK
Заблокирован
02.03.2012, 23:27 16
mazahaka2401, скайп есть, тарификация консультаций посекундная, консультации предоставляются круглосуточно - можете просто не выключать скайп, ложась спать. Предоплата 100% .
1
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 26
02.03.2012, 23:34  [ТС] 17
всем спасибо с обработчиком разобрался но теперь новая проблема

[C++ Error] Unit1.cpp(142): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Unit1.cpp(147): E2288 Pointer to structure required on left side of -> or ->*
0
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
02.03.2012, 23:36 18
Цитата Сообщение от mazahaka2401 Посмотреть сообщение
всем спасибо с обработчиком разобрался но теперь новая проблема

[C++ Error] Unit1.cpp(142): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Unit1.cpp(147): E2288 Pointer to structure required on left side of -> or ->*
N*Click->Click();// вместо * номер кнопки...
тобеж * замени на 9 или 10 или какая у тебя она там по счету
0
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 26
02.03.2012, 23:38  [ТС] 19
Цитата Сообщение от Limit-ED-itioN Посмотреть сообщение
N*Click->Click();// вместо * номер кнопки...
тобеж * замени на 9 или 10 или какая у тебя она там по счету
я заменил сразу на номера тех которые должны нажиматься клавишами клавиатуры .
Миниатюры
Как можно присвоить клавишу к пунктам MainMenu  
0
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
02.03.2012, 23:43 20
работаете с объектом или с указателем?
0
02.03.2012, 23:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2012, 23:43
Помогаю со студенческими работами здесь

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

Как можно установить свойство visible на пунктах компонента MainMenu через цикл?
Как можно установить свойство visible на пунктах компонента MainMenu через цикл? Идет запрос к...

Можно ли как-то в коде подключить клавишу мыши к батнику (.bat)
Здраствуйте, нуждаюсь в помоще) задали курсовую по мышке, должен придумать задание сам. От думал...

Как в этом коде textbox'a сделать,чтобы можно было нажимать клавишу backspace (стереть)?
нужно доработать код,чтобы клавиша backspace была активна(в текстбоксе работала) private void...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru