0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 2
1

Стрелки и кнопки управления

27.08.2013, 12:40. Показов 2996. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Господа, приветствую Вас!

Вопрос уже был задан кучу раз на всех форумах. Однако я для себя так и не нашел решения.

На моей форме Есть несколько объектов TButton. При этом я очень сильно хочу, чтобы при нажатии на стрелочки клавиатуры, происходили определенные события (например выполнялось событие ShowMessage("Hello"). Однако Все что я получаю, лишь курсор, бегающий от TButton к TButton.
Как быть? Что применить?

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
28
29
30
31
32
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TButton *Button1;
        TButton *Button2;
        TButton *Button3;
        void __fastcall FormKeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift);
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
 
 
        void __fastcall WMGetDlgCode(TWMNoParams & message);
        BEGIN_MESSAGE_MAP
          VCL_MESSAGE_HANDLER(WM_GETDLGCODE, TWMNoParams, WMGetDlgCode);
        END_MESSAGE_MAP(TForm);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
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
28
29
30
31
32
33
34
35
36
37
38
//---------------------------------------------------------------------------
 
#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::WMGetDlgCode(TWMNoParams & message){
 //
 //message.Result = DLGC_WANTARROWS;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
 
  switch (Key){
  case VK_UP:
  case VK_DOWN:
  case VK_LEFT:
  case VK_RIGHT:
    Memo1->Lines->Add( "Hello" );
    break;
  case VK_F2 :
    Memo1->Lines->Add( "Hello" );
    break;
  }
}
//---------------------------------------------------------------------------
Прикреплю проект для Builder 5
Вложения
Тип файла: rar Problem.rar (316.0 Кб, 8 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.08.2013, 12:40
Ответы с готовыми решениями:

Блокировка/разблокировка кнопки "Пуск", "Панели управления"
Всем привет! Внимание вопрос! Как мона заблокировать кнопку пуск, панель управления и по нажатию...

Реализация управления клавишами(стрелки)
Всем привет. Собственно в чем вопрос. Пишу простенькую базу данных студентов и хочу реализовать...

Во сколько раз угловая скорость минутной стрелки часов больше угловой скорости часовой стрелки
Во сколько раз угловая скорость минутной стрелки часов больше угловой скорости часовой стрелки?

Стрелки подождите, стрелки не бегите! (RTC спешат)
Есть RTC VS1307N (аналог DS1307). Кварц дешевый, от производителя nonami. Корпус кварца...

3
29 / 29 / 4
Регистрация: 28.08.2012
Сообщений: 154
27.08.2013, 12:55 2
Можно
C++
1
2
Button1->OnKeyDown = FormKeyDown;
Button2->OnKeyDown = FormKeyDown;
и т.д.
0
Практикантроп
4824 / 2717 / 525
Регистрация: 23.09.2011
Сообщений: 5,777
27.08.2013, 13:20 3
Цитата Сообщение от nikolaynik Посмотреть сообщение
Вопрос уже был задан кучу раз на всех форумах. Однако я для себя так и не нашел решения.
Я для себя уже нашел...
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::ApplicationEvents1ShortCut(TWMKey &Msg,
      bool &Handled)
{
   if (Msg.CharCode==37) ShowMessage("Лево - не право") ;
   if (Msg.CharCode==38) ShowMessage("Верх - не низ") ;
   if (Msg.CharCode==39) ShowMessage("Право - не лево") ;
   if (Msg.CharCode==40) ShowMessage("Низ - не верх") ;
   Handled = 1;
}
- компонент ApplicationEvents, на событие ShortCut. Handled в 0, если нужно, чтобы после выполнения (ShowMessage) приложение отрабатывало такое нажатие (фокус перемещался по контролам).
2
0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 2
29.08.2013, 10:02  [ТС] 4
Ребят, Спасибо!!
Все заработало!! Пришлось конечно, многое менять, потому как ловятся все нажатия независимо от того какая форма в фокусе.. Я переделал примерчик, думаю, для новичков будет полезно.
Вложения
Тип файла: rar Solution.rar (314.2 Кб, 27 просмотров)
0
29.08.2013, 10:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2013, 10:02
Помогаю со студенческими работами здесь

NBA 2K 13 - кнопки управления
кто знает кнопки управления пас, бросок, трехочковый бросок и т.д. расскажите а то поиграть хочется...

Кнопки управления формой
Здраствуйте ув. форумчане, подскажите кто то как можно сделать свои кнопки для управления окном...

Дополнительные кнопки управления
Мне нужно сделать дополнительные кнопки управления слайдом с другого места. Как мне это...

Кнопки управления звуком
Добрый день дорогие друзья, столкнулся с такой проблемой: написал программу которая воспроизводит...


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

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

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