И вновь этот злополучный KeyPress | |
---|---|
ZenTigra Автор Сообщений: 514 Дата регистрации: 03.12.2004 |
Никак не разберусь с событием KeyPress, хочу уйти от ON KEY LABEL.
Есть форма Form1 на ней есть Grid1 и кнопка Command1, нажатие на которую запускает форма Form2 (форма модальная, в ней редактируются данные из Grid1) В форме Form1 свойство KeyPreview=.T., а в KeyPress прописан такой код
Так вот, когда нажатые кнопки происходит через клавишу "F3", после закрытия формы Form2, на первой форме Forma1 происходит неприятная прорисовка Grid1 (мерцание), но когда на кнопку Command1 нажать мышкой, такого эффекта нет. Когда для обработки нажатия клавиши написать вот такой код
PS.Windows 7 (с установленной темой Windows XP), VFP9 |
Re: И вновь этот злополучный KeyPress | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Фокус с грида снимите. ThisForm.Command1.SetFocus()
|
Re: И вновь этот злополучный KeyPress | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Совершенно не в тему.
На мой взгляд, то бишь ИМХО))) Не стоит записывать какой то код в
Там должен быть вызов метода. Я понимаю, лишние телодвижения. Но почему то так правильно) И из других мест, вы не дергаете это событие, а вызываете нужный метод. Наверное в фоксе это не так важно? Не помню уже. Но сам стиль... ------------------ |
Re: И вновь этот злополучный KeyPress | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
NODEFAULT - чтобы не происходило "штатной реакции на нажатие F3".
И сделай как Владимир советует. Заведи метод "вызывающий форму2", и его вызывай и из KeyPress, и из Click кнопки. Вызов THISFORM.Command1.Click это буэ. ------------------ WBR, Igor |
Re: И вновь этот злополучный KeyPress | |
---|---|
ZenTigra Автор Сообщений: 514 Дата регистрации: 03.12.2004 |
Спасибо, помогло |
Re: И вновь этот злополучный KeyPress | |
---|---|
ZenTigra Автор Сообщений: 514 Дата регистрации: 03.12.2004 |
Хорошо, так и сделаю, а то не слушался раньше, а оказывается Вы правы были... Вот только б понять, зачем так делать? Исправлено 1 раз(а). Последнее : ZenTigra, 11.07.17 13:13 |
Re: И вновь этот злополучный KeyPress | |
---|---|
ZenTigra Автор Сообщений: 514 Дата регистрации: 03.12.2004 |
Не очень в тему, но ....
А если очень хочется использовать Alt+F2...F10, или Alt+X (У меня это было - закрыть окно) Уже привык к ним, а KeyPress их отловить не может, как быть? PS.Alt+F2... можно перевести на Ctrl+F2... (можно переучиться), но вот с другими.... |
Re: И вновь этот злополучный KeyPress | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
А ты просто поверь)))) Клик - это событие. Событие вызывает метод. Ну и т.д. Думаю на эту тему можно что то нагуглить. Это действует во всем ПО? Вот не уверен, но попробуй повесить эти клавиши в меню. ------------------ |
Re: И вновь этот злополучный KeyPress | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
В смысле поверь? Где логика, когда ты нажимаешь F3, а при этом срабатывает событие Click? Какой Click, не было никакого клика, а был самый что ни на есть KeyPress. А вот когда на событии KeyPress висит вызов метода OpenEditForm(), и на событии Click висит вызов этого же метода, логика есть. Опять же, если не знать, что где-то в KeyPress стоит вызов Command1.Click, то можно вообще об этом никогда не догадаться, что такой вызов есть. И сидишь ты, дописываешь права доступа к этой форме. Сделал кнопку Enabled=.F., а по F3 форма всё-равно у пользователя открывается. |
Re: И вновь этот злополучный KeyPress | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
На самом деле при вызове Command1.Click никакого "события Click" не "срабатывает" - банально вызывается метод-обработчик с названием Command1.Click. Но т.к. в фоксе обработчик события совершенно жёстко связан с собственно событием (по сути событие не существует само по себе, без одноименного метода-обработчика), то лучше разделять логику.
Вот в каком другом языке, или в фоксе при использовании позднего связывания через BINDEVENT - там вполне может быть так, что код обработчика события собственно некоторую "логику" и реализует, и один и тот же метод-обработчик привязан к разным событиям разных элементов управления - правда он, скорее всего, не будет назван Click в этом случае Ну и да, всё же обработка нажатий клавиш и нажатий экранных кнопок слегка различны - там разные "параметры срабатывания" передаются, потому такие "обработчики событий" не сводят в один - т.е. тоже останется простой код обработчика события, и более сложный код "реализации логики" вызываемый из разных обработчиков ------------------ WBR, Igor |
© 2000-2024 Fox Club  |