• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Почему может не работать кнопка Del?!

  • Автор темы WishMaster
  • Дата начала
W

WishMaster

Пишу на C++ Builder 6. На одной из форм программы (которая MDI) во всех Edit'ах почему то не срабатывает кнопка Del. Никак не могу понять, почему. Все остальные кнопки (в том числе Backspace) работают и набираются нормально. Del же не генерирует событие нажатия кнопки, я не то что блокировать его могу, я его и отловить то не могу. Раньше она работала и на этой форме (на других формах работает и сейчас), но установить, после чего перестала не могу, т.к. очень долго не обращал на это внимания. Есть какие-нить мысли? Ее что, можно как-нить заблокировать? :-\
 
W

WishMaster

какой здесь еще можно код? :) На нажатие del не срабатывает ни один обработчик, так что код отсутсвует ;)
 
W

WishMaster

=)
Она работала на этой форме, т.к. в версии программы годичной давности можна в эдите удалять символы делитом. Но я за год столько накрутил, что установить от чего дел перестал работать не представляется возможным ;) А код чего вылаживать я не знаю. Ну скажем код эдита:

Код:
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, поэтому тут его предусматривать смысла нет (при нажатии на него эта функция не срабатывает). На других формах есть едиты один в один с таким кодом КейПресс, и там при нажатии на дел можна удалять символы, а на этой форме - нет :)
Мистика и только :)
 
W

WishMaster

Создаю новый проект, кладу на форму Edit1, прописываю:

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

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

А у Вас как?
 
Y

Yason

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

WishMaster

теперь бы понять почему автор именно KeyPress показал
Потому что он [автор] коварен :rolleyes: Буду разбираться, я просто думал, может какая нить общая есть настройка для формы что ли. Вроде бы все прозрачно, а дел не срабатывает.
 
S

Silver Wind

может какая нить общая есть настройка для формы

Ну вообще-то у формы есть свойство KeyPreview. Если оно установлено, то сначала вызываются обработчики OnKey... формы, а уже затем (если не запретить их в обработчике формы) конкретного компонента.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!