|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.03.2012, 22:38 | #1 |
Регистрация: 21.03.2012
Сообщений: 6
|
OnKeyPress не видит нажатие Enter
Пишу калькулятор - форма, 25 Tbitbtn, 1 Tbutton, 1 Tlabel. Решил прикрутить поддержку клавиатуры, на цифры, действия, Enter для =.
KeyPreview установлен в true. Default на всех кнопках в false. Для проверки даже создал второй Tlabel, отображающий код приходящий с клавиатуры. OnKeyPress, OnKeyDown ловят все символы кроме Enter. По нажатию на Enter в Tlabel2 не пишется ничего. Однако срабатывает bitbtn1.click - т.е. кнопка, созданная первой на форме. В принципе успокоился, переназначив на первую созданную кнопку действия, предназначенные для =, но если чередовать нажатия кнопок на клавиатуре и на форме - начинается полная неразбериха - т.е. по нажатию на Enter жмется что ни попадя... Все остальные процедуры исключительно обработка Tbutton. Кто ворует Enter не представляю. Прошу не винить строго - это моя первая программа на Borland Delphi 7.3.4.3 Build 2011-08-01 Выкладываю полные исходники - кому не влом посмотреть wellcome... Надписи на кнопках сочиняла жена, я не виноват) P.S. Прошу извинить модераторов но не трите хотябы номер сборки может в нем проблемма... Последний раз редактировалось ЛамерВлад; 21.03.2012 в 22:52. Причина: Добавлены исходники |
21.03.2012, 22:40 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Цитата:
Код то где?
I'm learning to live...
|
|
21.03.2012, 23:34 | #3 |
Регистрация: 21.03.2012
Сообщений: 6
|
Не модально, первоначальный интерфейс старался сделать близким к стандартному калькулятору...
|
22.03.2012, 00:09 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Начал набирать с цифровой клавиатуры.
2+3. Нажал энтер - высветилось 5 Все нормально, обычный калькулятор точно так же работает. P.S. Ага, понял где ты запхнулся... Пропиши в OnClick каждой кнопки в конце обработчиков код: BitBtn1.SetFocus; Чтоб фокус при клике мышкой на любую кнопку автоматом переводился на кнопку =
I'm learning to live...
Последний раз редактировалось Stilet; 22.03.2012 в 00:16. |
22.03.2012, 00:20 | #5 |
Регистрация: 21.03.2012
Сообщений: 6
|
А вы уберите 481 строку - ничего не изменится. Я же писал что проблему решил не програмно, а тем что сунул процедуру = в первую созданную кнопку. Если поиграться чередованием кнопок на калькуляторе и на клавиатуре - фокус переходит к другим кнопкам и по нажатию на Enter может сработат например +. Не поленитесь прицепить внизу label отображающий код нажатой клавиши - #13 там не будет...
|
22.03.2012, 00:22 | #6 |
Регистрация: 21.03.2012
Сообщений: 6
|
За совет спасибо, но может подскажете что вызывает проблему?
|
22.03.2012, 09:43 | #7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Цитата:
А почему? Твоя структура программы ошибочна с самого начала, неверно ты спроектировал. Да программа работает как надо, но в нее заложено множество дырок, которые всплывут позже.
I'm learning to live...
|
|
22.03.2012, 20:34 | #8 |
Регистрация: 21.03.2012
Сообщений: 6
|
С прискорбием подтверждаю, что это моя первая программа, сделанная после просмотра первой серии видеоурока Антона Макрушина... и знания Паскаля, ученого в дремучем 95 году. Буду признателен, если подправите исходники или хотя бы обьясните ошибки.
|
22.03.2012, 22:31 | #9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Цитата:
Вот например начал бы так: Код:
А дальше уже просто стоит наворачивать этот обработчик как захочется.
I'm learning to live...
|
|
24.03.2012, 00:49 | #10 |
Регистрация: 21.03.2012
Сообщений: 6
|
Т.к. за первостепенное значение имело сходство с стандартным калькулятором, то:
1. От edit и memo отказался, так как нужно было выравнивание с правой стороны и невозможность вставки символов, кроме разрешенных в калькуляторе. 2. От button - т.к. хотелось сделать надписи кнопок разными цветами. Однако так и не понял, чем подход создавать кнопки на ходу, да еще поверх панелек лучше, чем предварительно нарисованные и расставленные кнопки? А назначение button.tag просто держать в себе тестовую инфу, или он имеет какое-то недоступное моему пониманию назначение. ИМХО, создание кнопок на лету - применимо в приложениях типа сапер, и на что-то большее врядли способно... |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нажатие Enter | Кристинка89 | Общие вопросы C/C++ | 2 | 18.05.2011 18:40 |
Повторное нажатие Enter | _-Re@l-_ | Общие вопросы Delphi | 10 | 28.01.2011 23:48 |
Нажатие Enter | Alana | Общие вопросы Delphi | 4 | 27.10.2010 14:31 |
Как привязать действие onkeypress на клавишу enter #13? | yaxx | Помощь студентам | 1 | 16.10.2010 09:17 |
Нажатие Enter | Screame | Microsoft Office Excel | 1 | 01.11.2009 17:02 |