Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Почему может не работать кнопка Del?!
Форум программистов > Системное программирование > C, С++ и С Builder > Borland C++ Builder & Kylix
WishMaster
Пишу на C++ Builder 6. На одной из форм программы (которая MDI) во всех Edit'ах почему то не срабатывает кнопка Del. Никак не могу понять, почему. Все остальные кнопки (в том числе Backspace) работают и набираются нормально. Del же не генерирует событие нажатия кнопки, я не то что блокировать его могу, я его и отловить то не могу. Раньше она работала и на этой форме (на других формах работает и сейчас), но установить, после чего перестала не могу, т.к. очень долго не обращал на это внимания. Есть какие-нить мысли? Ее что, можно как-нить заблокировать? :-\
sax_ol
Мало кода.
WishMaster
какой здесь еще можно код? smile.gif На нажатие del не срабатывает ни один обработчик, так что код отсутсвует smile.gif
sax_ol
WishMaster Нет кода, нет проблемы. Вы же сами написали - "Раньше она работала и на этой форме (на других формах работает и сейчас), но установить, после чего перестала не могу" - как предлагаете это нам устанавливать? по средствам телепартационных (или как их там) волн?
WishMaster
=)
Она работала на этой форме, т.к. в версии программы годичной давности можна в эдите удалять символы делитом. Но я за год столько накрутил, что установить от чего дел перестал работать не представляется возможным smile.gif А код чего вылаживать я не знаю. Ну скажем код эдита:

void __fastcall TMainForm::RzEditFrequencyKeyPress(TObject *Sender,
      char &Key)
{
  if (Key != 8 && Key != 13 && Key != 48 && Key != 49 && Key != 50 && Key != 51 && Key != 52 && Key != 53 && Key != 54 && Key != 55 && Key != 56 && Key != 57) Key = 0;
  if (Key == 13) RzEditFrequencyExit(Sender);
}


Разрешается нажатие только бекспейса, энтера и цифр. Delete не генерирует событие OnKeyPress, поэтому тут его предусматривать смысла нет (при нажатии на него эта функция не срабатывает). На других формах есть едиты один в один с таким кодом КейПресс, и там при нажатии на дел можна удалять символы, а на этой форме - нет ohmy.gif
Мистика и только smile.gif
sax_ol
Цитата(WishMaster @ 4:08:2008 - 10:58) *
Delete не генерирует событие OnKeyPress
Ой ли?
WishMaster
Цитата(sax_ol @ 4:08:2008 - 11:21) *
Ой ли?

Можете проверить smile.gif
sax_ol
WishMaster у меня "генерирует"
WishMaster
Создаю новый проект, кладу на форму Edit1, прописываю:

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
  MessageBox(NULL, "Нажата клавиша.", "", MB_OK);
}


При нажатии в эдите реагирует на буквы, цифры, бекспейс, ентер и т.д. На Delete молчит, как и на стрелки, Alt, Ctrl, Shift.

А у Вас как?
sax_ol
Цитата(WishMaster @ 4:08:2008 - 12:43) *
А у Вас как?
реагирует


Ох-ох-ох, обманул я вас. тоже нет, посыпаю голову пеплом. ;(

а обработчиков на KeyDown нет?
Yason
Ну вы как маленькие, право же...
Цитата(Волшебный F1)
Keys that don't correspond to an ASCII Char value (Shift or F1, for example) don't generate an OnKeyPress event.

KeyDown реагирует почти на всё.
sax_ol
Yason С этим слава богу разобрались smile.gif, теперь бы понять почему автор именно KeyPress показал. Да и я видел одно а думал про другое. ;(
WishMaster
Цитата(sax_ol @ 5:08:2008 - 07:20) *
теперь бы понять почему автор именно KeyPress показал

Потому что он [автор] коварен wink.gif Буду разбираться, я просто думал, может какая нить общая есть настройка для формы что ли. Вроде бы все прозрачно, а дел не срабатывает.
Silver Wind
Цитата(WishMaster @ 5:08:2008 - 11:09) *
может какая нить общая есть настройка для формы


Ну вообще-то у формы есть свойство KeyPreview. Если оно установлено, то сначала вызываются обработчики OnKey... формы, а уже затем (если не запретить их в обработчике формы) конкретного компонента.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.