Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Проблема с событием When когда тыкаешь в textbox мышкой  [new]
CTAC-KO
Member

Откуда: Украина, г. Ивано-Франковск
Сообщений: 1012
Привет!

Собственно такая проблема encountered - не всегда отрабатывает When. Если по форме меж текстбоксами (в которых и отрабатывается When) перемещаться с помощью ТАБа/клавы, то он всегда отрабатывает на ура. Но стоит кликнуть в другое поле мышкой - все, молчок. Срабатывает аж когда кликнешь мышкой на еще любое другое поле, даже то, с которого ушел, т.е. как-бы со второго раза. При этом GotFocus срабатывает всегда.

короче перенес весь код в GotFocus...

вфп9сп1
21 май 08, 17:40    [5696758]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с событием When когда тыкаешь в textbox мышкой  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Это был вопрос или "мысли вслух"? Если вопрос, то в чем он заключается? А вообще-то, неплохо прежде чем спрашивать воспользоваться поиском

https://www.sql.ru/forum/actualthread.aspx?tid=504752
21 май 08, 18:06    [5696996]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с событием When когда тыкаешь в textbox мышкой  [new]
CTAC-KO
Member

Откуда: Украина, г. Ивано-Франковск
Сообщений: 1012
Да, вопрос я написал, а затем вырезал чтобы вставить в др. месте и забыл...

Впорос в том, глюк это или нет? И встречался ли кто-то с таким?

Впрочем ответ вроде как по ссылке нашелся:

Последовательность событий можешь через EventTracking посмотреть:
form1.text1.Valid()
form1.command1.When()
form1.text1.LostFocus()
form1.command1.GotFocus()
form1.command1.Click()


Последовательность событий меняется в случае перехода между объектами клавиатурой или мышкой.

Приведенное "смешение" событий - это следствие использование мышки. Если же переход осуществляется при помощи только клавиатуры, то все происходит последовательно. Сначала все события "выхода" для одного объекта, затем все события "входа" для другого.

Кроме того, при потерей фокуса формой (из объекта не выходили) последовательность совсем другая. А при программном перемещении - еще один вариант.

Поэтому, использовать EventTracking надо с осторожностью. Понимая, что рассматривается всего-лишь один из множества вариантов действий пользователя.

Повторюсь, в общем случае, как-то "закладываться" на последовательность выполнения событий - глупо. Это будет всего-лишь один из множества вариантов.
21 май 08, 18:43    [5697264]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с событием When когда тыкаешь в textbox мышкой  [new]
CTAC-KO
Member

Откуда: Украина, г. Ивано-Франковск
Сообщений: 1012
цель: хочу чтобы в моих текстбоксах при получении фокуса включалась русская раскладка клавы, если это указано в пропертях текстбокса
21 май 08, 18:47    [5697285]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с событием When когда тыкаешь в textbox мышкой  [new]
CTAC-KO
Member

Откуда: Украина, г. Ивано-Франковск
Сообщений: 1012
ВладимирМ
А вообще-то, неплохо прежде чем спрашивать воспользоваться поиском
я искал по слову When - не искало вообще, искал по словам When и textbox - результатов было мильён и все не то
21 май 08, 18:49    [5697299]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с событием When когда тыкаешь в textbox мышкой  [new]
CTAC-KO
Member

Откуда: Украина, г. Ивано-Франковск
Сообщений: 1012
впрочем ответа там таки нет.

Изменение последовательности событий не означает что событие вообще не должно произойти/отработать - а именно такую картину наблюдал.
21 май 08, 18:51    [5697312]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с событием When когда тыкаешь в textbox мышкой  [new]
Sergey Sizov.
Guest
CTAC-KO
впрочем ответа там таки нет.

Изменение последовательности событий не означает что событие вообще не должно произойти/отработать - а именно такую картину наблюдал.

Событие When определяет получит ли объект фокус или не получит. При тыкании мышкой фокус передается принудительно и нет смысла вызывать when.
Менять раскладку клавы в обработчике события, которое еще только решает пускать ли фокус в данный объект, несколько опрометчиво. GotFocus для этого больше подходит ибо происходит ПОСЛЕ получения фокуса.
21 май 08, 19:04    [5697390]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с событием When когда тыкаешь в textbox мышкой  [new]
CTAC-KO
Member

Откуда: Украина, г. Ивано-Франковск
Сообщений: 1012
спасибо за ответ, теперь понятно... хотя и не совсем - со второго клика-то оно уже работает куда не тычь...
Sergey Sizov.
Менять раскладку клавы в обработчике события, которое еще только решает пускать ли фокус в данный объект, несколько опрометчиво. GotFocus для этого больше подходит ибо происходит ПОСЛЕ получения фокуса.
к чему, собственно, я и пришел...
21 май 08, 20:17    [5697592]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с событием When когда тыкаешь в textbox мышкой  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
CTAC-KO
впрочем ответа там таки нет.

Изменение последовательности событий не означает что событие вообще не должно произойти/отработать - а именно такую картину наблюдал.

Почему же. Ведь, скорее всего, ты делаешь еще и обратное переключение раскладки при выходе из объекта в LostFocus(). Вот и получаешь, что сначала по When устанавливаешь одну раскладку, а затем по LostFocus() раскладка сбрасывается в исходную.

Вообще-же, сама идея автоматического изменения глобальных настроек операционной системы (в данном случае, раскладки клавиатуры) - порочная. Программа такие фокусы делать не должна. Не ее это задача. Кроме большого количества "теплых" слов от пользователей за такие "выкрутасы" ты ничего не услышишь.
22 май 08, 11:36    [5698964]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с событием When когда тыкаешь в textbox мышкой  [new]
Sergey Sizov.
Guest
Володь, по-моему ты несколько погорячился.
1. Раскладка клавы индивидуальна для каждой запущенной проги и не зависит от раскладок в других прогах. То есть эта настройка не глобальная.
2. Если в некоторые поля должны вводится только латинские буквы при том, что все остальное вводится по-русски, очень даже удобно автоматическое переключение раскладки клавы именно в этих полях. Время ввода и количество нажимаемых клавиш сокращается очень сильно. Ругани от пользователей за использование такого механизма начиная еще с fpd2.6 не слышал ни разу.
22 май 08, 11:46    [5699072]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с событием When когда тыкаешь в textbox мышкой  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
По большому счету, к любым "выкрутасам" программы можно привыкнуть (приспособиться). Но, лично я был бы очень сильно против, если бы программа автоматически меняла раскладку клавиатуры. Вне зависимости от того, происходит ли это при перемещении между объектами одной формы или при переключении на разные формы.

Здесь несколько проблем. Причем к собственно программированию они отношения не имеют.

1. Чисто психологическая. Я должен перестроится с русской раскладки на английскую. Т.е. перестать "видеть" русские буквы на клавиатуре и начать "видеть" английские. Ручное переключение раскладки для меня и служит таким сигналом, который "переключает" мое "видение" клавиатуры. При автоматическом механизме, я этого могу не заметить...

Именно поэтому меня сильно раздражает PuntoSwitcher. Гадость страшная

2. Программы имеют "привычку" развиваться (изменяться). Это сейчас в данном поле могут быть только латинские символы. А "завтра" там понадобяться русские символы. Отключение автоматического механизма - означает "переучивание" пользователя.
22 май 08, 12:01    [5699213]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с событием When когда тыкаешь в textbox мышкой  [new]
Sergey Sizov.
Guest
Вот, опять решение вопроса упирается в личные пристрастия. Это тебе пунто не удобен, а другие пищат от вострога.
При МАССОВОМ вводе человек о ракладке забывает напрочь, совсем, наглухо. Он оперирует КЛАВИШАМИ с нужными символами, но никак не раскладкой. И потому операторы принимают автоматическое переключение как должное или даже с радостью, как избавление от необходимости помнить раскладки и постоянно их переключать.
Володь, массовый ввод сильно отличается от набора текстов и потому подходы к нему иногда сильно другие.
22 май 08, 12:21    [5699406]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с событием When когда тыкаешь в textbox мышкой  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
При массовом вводе подходы действительно принципиально другие. Но у меня сильные сомнения, что в данном случае речь идет именно о таком случае. Где вы видели переключение мышкой между объектами одной формы при массовом вводе?

Скорее всего, речь идет об очередном варианте "мне кажется, что пользователю будет удобнее" без какого-либо обсуждения этого вопроса с самими пользователями или с постановщиком задачи.

Вопрос организации пользовательского интерфейса - это та вещь, которую ни в коем случае нельзя давать на откуп программиста. Результат, как правило, очень плачевный.
22 май 08, 12:45    [5699639]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с событием When когда тыкаешь в textbox мышкой  [new]
Sergey Sizov.
Guest
А вот тут полностью соглашусь.
22 май 08, 12:50    [5699697]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить