Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
mazahaka2401
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 26
#1

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

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

Ка можно присвоить клавишу к пунктам MainMenu?
Например: в MainMenu есть пункты Новая игра и Выход я хочу чтобы действия этих пунктов осуществлялись при нажатии клавиш F2 и Esc. Подскажите как это можно реализовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2012, 21:10
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как можно присвоить клавишу к пунктам MainMenu (C++ Builder):

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

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

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

Как можно быстро присвоить каждому элементу структуры значение пустой строки
Всем доброе время суток! Возник такой вот вопросик: есть структура struct...

Как сделать обработчик для MainMenu
Сделал обработчик кнопки, большой код, а можно как то реализовать это действие...

Как изменить свойство элемента MainMenu
Привет всем подскажите как изменить свойство например Caption элемента...

26
Limit-ED-itioN
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
mazahaka2401
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
Limit-ED-itioN
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
02.03.2012, 22:29 #4
что именно пишет?
0
mazahaka2401
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
mazahaka2401
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
mazahaka2401
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 26
02.03.2012, 23:13  [ТС] #9
Цитата Сообщение от LK Посмотреть сообщение
Поподробнее:
Архангельский А.Я. Программирование в С++ Builder.
Есть в сети.
я конешно понимаю , что не всё легко даётся но мне сейчас это нужно по быстрому сделать.
нет времени читать книгу.
помоги пожалуйста, если ты разбираешься то у тебя это много времени не займёт.
0
Limit-ED-itioN
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
02.03.2012, 23:18 #10
С лева на екране 2 маленьких окошка, в нижнем - много параметров, внимательней прочти что я написал и сделай так же
0
mazahaka2401
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 26
02.03.2012, 23:19  [ТС] #11
Цитата Сообщение от Limit-ED-itioN Посмотреть сообщение
С лева на екране 2 маленьких окошка, в нижнем - много параметров, внимательней прочти что я написал и сделай так же
я знаю какие это 2 окошка я не понял с обработчиком.
0
Limit-ED-itioN
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
02.03.2012, 23:20 #12
Цитата Сообщение от mazahaka2401 Посмотреть сообщение
skype есть??? так проще будет общаться
может по телефону еще?!
0
BRcr
4015 / 2305 / 291
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 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
Limit-ED-itioN
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
mazahaka2401
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
Limit-ED-itioN
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
mazahaka2401
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 26
02.03.2012, 23:38  [ТС] #19
Цитата Сообщение от Limit-ED-itioN Посмотреть сообщение
N*Click->Click();// вместо * номер кнопки...
тобеж * замени на 9 или 10 или какая у тебя она там по счету
я заменил сразу на номера тех которые должны нажиматься клавишами клавиатуры .
0
Миниатюры
Как можно присвоить клавишу к пунктам MainMenu  
Limit-ED-itioN
5 / 5 / 2
Регистрация: 12.02.2012
Сообщений: 44
02.03.2012, 23:43 #20
работаете с объектом или с указателем?
0
02.03.2012, 23:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2012, 23:43
Привет! Вот еще темы с решениями:

Как разместить главное меню (MainMenu) в любом месте формы
Не могу разобраться с проблемой: на форме присутствует панель со свойством...

Как программно поставить Enabled=false в некоторых пунктах MainMenu?
Как программно поставить Enabled=false в некоторых пунктах MainMenu?

У меня есть менюшки от MainMenu, как мне назначить им хоткеи?
Доброго времени суток! У меня есть менюшки от MainMenu, как мне назначить им...

Как программно нажать клавишу [=] и [-]?
Почти все поисковики перерыл, а ответа так и не нашел =( Мне нужно программно...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru