Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Вывести клавишу в Memo


Автор: vitoss18 16.2.2011, 23:17
Помогите начинающему программисту.
Здравствуйте меня зовут Виталий! я начинающий программист, но столкнулся с проблемой.
Как запрограммировать клавишу, что при ее нажатии в поле "Мемо" появилась та буква, которая на клавише.
я говорю про программу, не про клавиатуру которая подключена к компу, а программа-клавиатура.
http://s2.ipicture.ru/uploads/20110216/zwNPYGfc.jpg

Модератор: Название темы должно отражать ее суть!

Автор: SVN74 16.2.2011, 23:23
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
    Memo1->Lines->Add("D");
}

Автор: Данкинг 17.2.2011, 01:19
Код

Memo1->Lines->Add(((TButton*)(Sender))->Caption);

Автор: nick42 17.2.2011, 16:00
Цитата(vitoss18 @  16.2.2011,  23:17 Найти цитируемый пост)
при ее нажатии в поле "Мемо" появилась та буква, которая на клавише
   просто в обработчике события нажатия на клавишу запиши вот так :
  void __fastcall TForm1::Button1Click(TObject *Sender)
  {
        Memo1->Lines->Add(Button1->Caption);   
  }

   , а в общем случае (если клавишь несколько) используй строку из предыдущего поста.

Автор: oldcode 17.2.2011, 20:12
Вам бы поискать исходники прогрпммы "виртуальная клавиатура", которых мало-мало есть.

Автор: ZVano 18.2.2011, 13:39
1. Создать форму
2. Выставить форме свойство KeyPreview = true
3. Назначаете обработчик OnKeyDown
Он будет вызван каждый раз, когда пользователь нажимает клавишу в любом контроле формы.
4. Обработать параметры WORD & Key, TShiftState Shift, которые и говорят что было нажато.

Код

void __fastcall TfrmTest::FormKeyDown(TObject * Sender, WORD & Key, TShiftState Shift) {
    try {
        if (Shift.Contains(ssCtrl)) {
            if (Key == VK_LEFT)
                //Нажали CTRL-Влево
            if (Key == VK_RIGHT)
                //Нажали CTRL-Вправо
            if (Key == VK_HOME || Key == VK_UP)
                //Нажали CTRL-HOME либо CTRL-Вверх
            if (Key == VK_END || Key == VK_DOWN)
                //Нажали CTRL-END либо CTRL-Вниз
        }
        else {
            if (Key == 13) {
                //Нажали ENTER (возможно в комбинации с другими клавишами)
            }
        }
    }
    catch(Exception & exception) {
        //ParseException(this, exception, __FUNCTION__, __LINE__, ERSC_PR, "", "", "");
    }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)