Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Загвоздка в вводе с клавы

70K
03 мая 2011 года
maximusoida
1 / / 03.05.2011
Здравствуйте делаю для лабы калькулятор я его почти закончил, но препод попросил сделать ввод с клавы. Мысленно я знаю как это сделать, но физически у меня не выходит, может кто подскажет? Моя прога полностью здесь http://zalil.ru/30971503, но я думаю проще часть кода здесь разместить: у меня есть быдло код вводе цифр поэтому полностью не буду писать, итак мне нужно реализовать, вот что:
нужно реализовать +,-,*,/,= то есть ввёл с клавы число нажал +, ввёл второе число, нажал = и выводится ответ

я так понимаю можно использовать action, но как-то я не понимаю как их можно у меня в проге использовать

сам код, здесь я его максимально минимизировал, в проге он больше, и сделано больше кнопок

Код:
float f=0; // если f==0 то удаляем нуль в строке
// и пишем нужное число с кнопки

int arifmetic, backspace;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{


ClientHeight = 257; ClientWidth = 499;
TStringList *List = new TStringList;

f=0; //Ждем первую цифру
arifmetic=0;
StaticText1->Text = 0;

}
//---------------------------------------------------------------------------

// кнопка С
void __fastcall TForm1::Button1Click(TObject *Sender)
{
StaticText1->Text = "0";
arifmetic= 0;
f = 0;
}


//Цифра 1---------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if( f == 0)
{
StaticText1->Text = "1";
f = 1;
}
else
StaticText1->Text = StaticText1->Text + "1";


//ОСТАЛЬНЫЕ ЦИФРЫ СДЕЛАНЫ ТАК ЖЕ, КРОМЕ 0 ЕСТЕСТВЕННО


//Кнопка +------------------------------------------------------
void __fastcall TForm1::Button25Click(TObject *Sender)
{
x=StrToFloat(StaticText1->Text);
arifmetic = 1;
f = 0;
}
//Кнопка - -----------------------------------------------------------
void __fastcall TForm1::Button24Click(TObject *Sender)
{
x=StrToFloat(StaticText1->Text);
arifmetic = 2;
f = 0;
}
//Кнопка * ------------------------------------------------------------
void __fastcall TForm1::Button23Click(TObject *Sender)
{
x=StrToFloat(StaticText1->Text);
arifmetic = 3;
f = 0;
}
//Кнопка / ----------------------------------------------------------------
void __fastcall TForm1::Button26Click(TObject *Sender)
{
x=StrToFloat(StaticText1->Text);
arifmetic = 4;
f = 0;
}
//Кнопка =----------------------------------------------------------------

void __fastcall TForm1::Button22Click(TObject *Sender)
{ switch (arifmetic)
{
case 1:
x += StrToFloat(StaticText1->Text);
StaticText1->Text=FloatToStrF(x,ffGeneral,7,7);
f=0;
break;
case 2:
x -= StrToFloat(StaticText1->Text);
StaticText1->Text=FloatToStrF(x,ffGeneral,7,7);
f=0;
break;
case 3:
x *= StrToFloat(StaticText1->Text);
StaticText1->Text=FloatToStrF(x,ffGeneral,7,7);
f=0;
break;
case 4:
x /= StrToFloat(StaticText1->Text);
StaticText1->Text=FloatToStrF(x,ffGeneral,7,7);
f=0;
break;
}
// ввод цифр с клавы
void __fastcall TForm1::StaticText1KeyPress(TObject *Sender, char &Key)
{ f=0;
if (Key<'0' || Key>'9') Key=0; // фильтр ввода
switch (Key)
{case 1:
Button2Click(Sender);
break;
case 2:
Button3Click(Sender);
break;
case 3:
Button4Click(Sender);
break;
case 4:
Button5Click(Sender);
break;
case 5:
Button6Click(Sender);
break;
case 6:
Button7Click(Sender);
break;
case 7:
Button8Click(Sender);
break;
case 8:
Button9Click(Sender);
break;
case 9:
Button10Click(Sender);
break;
case 10:
Button11Click(Sender);
break;
}
}
1.9K
06 мая 2011 года
George22
91 / / 09.12.2007
Проще всего заменить StaticText на Edit: у Edit есть метод KeyPress:

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
//Key - нажатая клавиша
}


или вот еще быстро наклепал: добавляешь на форму ApplicationEvents
в его обработчике OnMessage пишешь:

void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,bool &Handled)
{
if(Msg.message ==WM_CHAR)
{
StaticText1->Caption=StaticText1->Caption+((char)Msg.wParam);
}
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог