Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как в калькуляторе запрограммировать ввод с клавы? 
:(
    Опции темы
ruslandlion
Дата 18.11.2012, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2006

Репутация: нет
Всего: нет



Написал калькулятор, запрограммировал кнопки, а как привязать эти кнопки ( компонент BitBtn) с кнопками клавиатуры. Чтобы если я ввёл к примеру с клавиатуры число "7", эта клавиша связалась с событием нажатия на кнопку 7 в программе?
PM MAIL   Вверх
amsoft
Дата 18.11.2012, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 17.10.2009
Где: KZ, Astana

Репутация: 1
Всего: 4



обрабатывай OnKeyPress формы
--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин
PM   Вверх
ruslandlion
Дата 18.11.2012, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2006

Репутация: нет
Всего: нет



Я не очень хорошо разбираюсь в программировании , попытался вот так сделать 

Код

procedure TForm1.BitBtn1KeyPress(Sender: TObject; var Key: Char);
begin
if key=VK_NUMPAD1 then   procedure TForm1.BitBtn39Click(Sender: TObject); // клавиша 1 на калькуляторе

end;



Не удаётся скомпелировать. Тоесть я хотел задать программе условие если происходит нажатие на клавишу VK_NUMPAD1 , то должна вызваться процедура нажатие на клавишу "1" procedure TForm1.BitBtn39Click(Sender: TObject); Вылетает ошибка
PM MAIL   Вверх
northener
Дата 18.11.2012, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Код

 if key=VK_NUMPAD1 then   BitBtn39.Click;



--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
ruslandlion
Дата 18.11.2012, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2006

Репутация: нет
Всего: нет



Не компилируется , вот так попробывал 

Код

begin
 if key=VK_NUMPAD1 then   form1.bitbtn39.Click;

end;



Тоже результатов не дало, ошибка "incompatible types"
PM MAIL   Вверх
northener
Дата 18.11.2012, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(ruslandlion @  18.11.2012,  19:59 Найти цитируемый пост)
Не компилируется

А. Это же KeyPress.
Код

   if key='1' then  bitbtn39.Click;

И не надо везде где попало добавлять form1.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
ruslandlion
Дата 18.11.2012, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2006

Репутация: нет
Всего: нет



Спасибо большое, получилось.
PM MAIL   Вверх
Данкинг
Дата 18.11.2012, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



ruslandlion, только лучше назначай каждой кнопке свою процедуру, и её уже вызывай. Т.е., например, выполняй свои действия не непосредственно в bitbtn39.Click, а в "самодельной" процедуре bitbtn39_new, которая будет вызываться по bitbtn39.Click. Я и сам так иногда делаю, но знаю, что это неправильно.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ruslandlion
Дата 18.11.2012, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2006

Репутация: нет
Всего: нет



 вначале хотел так сделать, потом отбросил затею, так как часто уникальные в своём роде функции выполняються, например вычисление Арктангенса на калькуляторе.

Это сообщение отредактировал(а) ruslandlion - 18.11.2012, 21:50
PM MAIL   Вверх
northener
Дата 19.11.2012, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(Данкинг @  18.11.2012,  21:21 Найти цитируемый пост)
Я и сам так иногда делаю, но знаю, что это неправильно

Не понятно, что "так" сам делаешь и что не правильно.

И сам совет делать отдельную процедуру, "которая будет вызываться по bitbtn39.Click" тоже не понимаю. И в общем случае и в данной конкретной задаче "Калькулятор".


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Данкинг
Дата 19.11.2012, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(northener @  19.11.2012,  01:17 Найти цитируемый пост)
Не понятно, что "так" сам делаешь и что не правильно.

Пишу весь код непосредственно в процедуре нажатия кнопки.
Цитата(northener @  19.11.2012,  01:17 Найти цитируемый пост)
И сам совет делать отдельную процедуру,

В конкретном случае, может, действительно смысла нет. Но в общем случае читаемость кода как-то лучше, когда есть процедура "report", а не Button1.Click. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
northener
Дата 20.11.2012, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(Данкинг @  19.11.2012,  01:38 Найти цитируемый пост)
Но в общем случае читаемость кода как-то лучше, когда есть процедура "report", а не Button1.Click.

В общем случае читаемость кода лучше, если вместо Button1.Click будет btnReport.Click. smile
Я то задал этот вопрос в основном потому, что процедура TControl.Click весьма себе умная. Посмотри её описание в хелпе и/или её реализацию в исходниках.

Это сообщение отредактировал(а) northener - 20.11.2012, 00:33


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
superVad
Дата 20.11.2012, 02:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



Код из обработчика выносится в отдельную процедуру за 2 минуты.
Другое дело, что надо бы отделять интерфейс от логики.
PM MAIL   Вверх
northener
Дата 20.11.2012, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(superVad @  20.11.2012,  02:28 Найти цитируемый пост)
Код из обработчика выносится в отдельную процедуру за 2 минуты.
Другое дело, что надо бы отделять интерфейс от логики. 

Ты это к чему?
Мы тут, вроде, пока говорим о процедуре Click.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Данкинг
Дата 20.11.2012, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(northener @  20.11.2012,  01:28 Найти цитируемый пост)
 если вместо Button1.Click будет btnReport.Click.

Возможно, действительно так читабельней, но кнопок я никогда не переименовываю. Обычно делаю именно процедура, т.е. для отчёта процедура Report, для экспорта - Exporter и т.п.



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0625 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.