Проблема Control_Validate при MsgBox в нём

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Проблема Control_Validate при MsgBox в нём

Сообщение Space » 30.08.2009 (Вс) 0:10

Юзер щёлкает на кнопке, вызывается Text1_Validate, где показывается MsgBox с ожиданием реакции пользователя (и без ожидания та же проблема). После закрытия месседжа кнопка получает фокус, при этом у юзера возникает ощущение, что кнопка была нажата (сам такое испытал), но Command1_Click не происходит, что недопустимо! Как обрабатывать такую ситуацию и желательно, универсально, т.е. фокус может получить любой контрол и его событие должно выполниться?!

karlex
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 138
Зарегистрирован: 30.03.2009 (Пн) 20:25
Откуда: Пермский край, г.Кунгур

Re: Проблема Control_Validate при MsgBox в нём

Сообщение karlex » 30.08.2009 (Вс) 9:25

Опять ты пытаешься полить грязью устоявшиеся принципы.
Если пользователь нажал кнопку, то вполне логично, что после этого на ней останется фокус, так что же тебя не устраивает?

Или ты хотел сказать, что после Validate фокус не возвращается в текстовое поле?
Так это зависит от того установлен флажок Cancel или нет.
Все гениальное — просто!
-------------------------------------
Кто ищет — тот всегда найдет!
-------------------------------------
Лень — двигатель прогресса.
Прогресс — двигатель лени.

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Проблема Control_Validate при MsgBox в нём

Сообщение Space » 30.08.2009 (Вс) 11:54

ничего я не пытаюсь полить грязью. Просто меня не устраивает такой ход событий. Я сам не сразу сообразил, почему у меня не происходит перерасчёт после нажатия кнопки - показа MsgBox. Дело в том, что результат перерасчёта явно не видно сразу (старое значение заменяется новым и оно м.б. равно прежнему значению)...
Раз такой умный, объясни, почему GotFocus появляется, а Click не соизволит - ведь был щелчок мышью по кнопке ;) И такое объяснение как "Потому что кнопка получает фокус" не проходит, это я и без тебя знаю. Почему нет Click`а?
Вложения
Validate.zip
(1.04 Кб) Скачиваний: 39

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Проблема Control_Validate при MsgBox в нём

Сообщение iGrok » 30.08.2009 (Вс) 18:55

Space писал(а):ничего я не пытаюсь полить грязью. Просто меня не устраивает такой ход событий. Я сам не сразу сообразил, почему у меня не происходит перерасчёт после нажатия кнопки - показа MsgBox. Дело в том, что результат перерасчёта явно не видно сразу (старое значение заменяется новым и оно м.б. равно прежнему значению)...
Раз такой умный, объясни, почему GotFocus появляется, а Click не соизволит - ведь был щелчок мышью по кнопке ;) И такое объяснение как "Потому что кнопка получает фокус" не проходит, это я и без тебя знаю. Почему нет Click`а?

Потому, что кнопка успевает получить только MouseDown.
А MouseUp происходит уже не на кнопке. Точнее, вообще не происходит.
Ты сам же и нарушаешь цепочку событий своим MsgBox'ом. Сам же нарушаешь логику работы, и сам же удивляешься: "А чего это она нарушена?"
А зачем, собственно? Что такого ты хочешь делать в Validate, что тебе нужно для этого показывать модальное окно (msgbox) ?
label:
cli
jmp label

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Проблема Control_Validate при MsgBox в нём

Сообщение Space » 30.08.2009 (Вс) 20:25

ладно, я попробую избавиться от месседжа там. Но может возникнуть ситуация, когда без него не обойтись.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 20

    TopList  
cron