| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Как в калькуляторе запрограммировать ввод с клавы? |
| Автор: ruslandlion 18.11.2012, 16:04 |
| Написал калькулятор, запрограммировал кнопки, а как привязать эти кнопки ( компонент BitBtn) с кнопками клавиатуры. Чтобы если я ввёл к примеру с клавиатуры число "7", эта клавиша связалась с событием нажатия на кнопку 7 в программе? |
| Автор: amsoft 18.11.2012, 18:29 |
| обрабатывай OnKeyPress формы |
| Автор: ruslandlion 18.11.2012, 19:33 | ||
Я не очень хорошо разбираюсь в программировании , попытался вот так сделать
Не удаётся скомпелировать. Тоесть я хотел задать программе условие если происходит нажатие на клавишу VK_NUMPAD1 , то должна вызваться процедура нажатие на клавишу "1" procedure TForm1.BitBtn39Click(Sender: TObject); Вылетает ошибка |
| Автор: northener 18.11.2012, 19:53 | ||
|
| Автор: ruslandlion 18.11.2012, 19:59 | ||
Не компилируется , вот так попробывал
Тоже результатов не дало, ошибка "incompatible types" |
| Автор: northener 18.11.2012, 20:59 | ||
А. Это же KeyPress.
И не надо везде где попало добавлять form1. |
| Автор: ruslandlion 18.11.2012, 21:08 |
| Спасибо большое, получилось. |
| Автор: Данкинг 18.11.2012, 21:21 |
| ruslandlion, только лучше назначай каждой кнопке свою процедуру, и её уже вызывай. Т.е., например, выполняй свои действия не непосредственно в bitbtn39.Click, а в "самодельной" процедуре bitbtn39_new, которая будет вызываться по bitbtn39.Click. Я и сам так иногда делаю, но знаю, что это неправильно. |
| Автор: ruslandlion 18.11.2012, 21:50 |
| вначале хотел так сделать, потом отбросил затею, так как часто уникальные в своём роде функции выполняються, например вычисление Арктангенса на калькуляторе. |
| Автор: northener 19.11.2012, 00:17 |
Не понятно, что "так" сам делаешь и что не правильно. И сам совет делать отдельную процедуру, "которая будет вызываться по bitbtn39.Click" тоже не понимаю. И в общем случае и в данной конкретной задаче "Калькулятор". |
| Автор: Данкинг 19.11.2012, 01:38 |
Пишу весь код непосредственно в процедуре нажатия кнопки. В конкретном случае, может, действительно смысла нет. Но в общем случае читаемость кода как-то лучше, когда есть процедура "report", а не Button1.Click. |
| Автор: superVad 20.11.2012, 02:28 |
| Код из обработчика выносится в отдельную процедуру за 2 минуты. Другое дело, что надо бы отделять интерфейс от логики. |
| Автор: northener 20.11.2012, 02:34 | ||
Ты это к чему? Мы тут, вроде, пока говорим о процедуре Click. |
| Автор: Данкинг 20.11.2012, 09:30 |
Возможно, действительно так читабельней, но кнопок я никогда не переименовываю. Обычно делаю именно процедура, т.е. для отчёта процедура Report, для экспорта - Exporter и т.п. |
| Автор: bems 20.11.2012, 12:27 |
| батюшки... |
| Автор: Данкинг 20.11.2012, 12:45 |
Может быть, когда много кнопок, как в случае с калькулятором, это имеет смысл. Но у меня столько много обычно не бывает. |
| Автор: northener 21.11.2012, 00:40 | ||
Но ведь Caption кнопок всё равно ведь, наверно, меняешь? Так почему бы и Name не сменить одновременно? P.S. Отчасти я ещё и потому не забыл этот топик, что я по основной своей линии порой весьма ограничен размером стека. И простое "подставление" одной процедуры в другую вызывает у меня некое "отторжение". |