|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
Разбираю старую программу, доставшуюся в наследство. Есть в ней такое место. Код: vbnet 1. 2. 3. 4. 5. 6. 7.
КодСостОбъект - это группа переключателей. Пользователь должен ввести код состояния объекта. Иначе выдаётся сообщение и всё возвращается обратно. Но у группы переключателей нет событий GetFocus и LostFocus. Значит у него не и свойства SetFocus? Так или нет? Но программа не выдаёт ошибок, а фокус передаётся на первый контрол на форме (для списка переходов по Таб) Зато каждый переключатель может иметь фокус. Пробую передать фокус первому переключателю в группе. Не срабатывает. Фокус всё равно переходит на первый контрол на форме. А мне надо, чтобы он никуда не переходил. Как быть? Дело в том, что на событие получение фокуса я повесил подсветку поля. И получается не совсем хорошо. ------------------------------------------------------------- А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 09:36 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
Joss...у группы переключателей нет событий GetFocus и LostFocus. Значит у него не и свойства SetFocus? Так или нет?А посмотреть? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 10:00 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
Интересно получается. Метод есть, а событий нет. Как так? А Вы задайте его. И посмотрите, что получается. У меня фокус перескакивает на первый контрол на форме. А у Вас? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 10:28 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
Joss, Проблема здесь не группа переключателей, а старые грабли с потерей / получением фокуса... В этом смысле ГП не отличается от обычного поля на которое нужно вернуть фокус обратно в случае его неправильного заполнения... Лечится это программно - сначала переводим фокус на любой другой элемент формы, а затем возвращаем обратно... Я тут набросал пример, если вы выбираете в группе значения 1-3 , то после Enter выходит сообщение и фокус остается на месте... Если 4 и 5 то все нормально и фокус переходит на поле... В коде помечена строка с лечением ситуации... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 10:31 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
JossА Вы задайте его. И посмотрите, что получается. У меня фокус перескакивает на первый контрол на форме.А Вы создайте группу БЕЗ ПЕРЕКЛЮЧАТЕЛЕЙ и попробуйте то же самое... но сперва подумайте - что получится, кому достанется фокус, и, главное, почему... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 10:33 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
Jossнет событий GetFocus и LostFocus Как это нет? Есть OnEnter, OnExit, код на Exit и повешен ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 10:34 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3.
Не? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 10:48 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
Спасибо за советы. Постарался проверить все. vmag Ваш пример работает. Но вот в моей форме этот способ не функционирует. Любой SetFocus сначала переходит на первый элемент на форме, а уже потом на тот, что указан в команде. Пробовал и декомпилировать и компилировать заново. Ничего не меняется. наверно какой-то глюк. Akina Ну не знаю. Соображалка не работает. Не сейчас. Надо посидеть в спокойной обстановке. MrShin Но ведь формально у группы нет событий SetFocus и LostFocus Predeclared На мой взгляд оптимальное предложение. Сделал вот так Код: vbnet 1. 2. 3. 4. 5. 6.
всё заработало на УРА! Оставил в рабочей версии. А с остальными буду копаться. Всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 11:41 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
Jossформально у группы нет событий SetFocus и LostFocus Да, формально нет, т.к. реально фокус получает один из контролов группы, а метод SetFocus передает фокус также контролу в группе. Но для наших целей Exit вполне подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:01 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
JossВаш пример работает. Но вот в моей форме этот способ не функционирует. Любой SetFocus сначала переходит на первый элемент на форме, а уже потом на тот, что указан в команде. Пробовал и декомпилировать и компилировать заново. Ничего не меняется. наверно какой-то глюк. Самое прикольное, что если в моем примере заменить две строки с SetFocus на Cancel = True то тоже все великолепно работает... Отсюда можно сделать вывод, что Cancel = True это кардинальное решение, - типа "харэ" или "стапэ" от слова "ваще..." А мой пример в вашем случае скорее всего сводится на нет действиями из других событий, следующих за Exit этого или других элементов управления... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:08 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
MrShinJossформально у группы нет событий SetFocus и LostFocus Да, формально нет, т.к. реально фокус получает один из контролов группы, а метод SetFocus передает фокус также контролу в группе. Но для наших целей Exit вполне подходит. Могу даже уточнить. Фокус получает включенный переключатель. Если такого нет, то фокус получает самый верхний переключатель. Если же таких несколько (выстроены в ряд), то самый левый из ряда. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:17 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
vmagСамое прикольное, что если в моем примере заменить две строки с SetFocus на Cancel = True то тоже все великолепно работает... Отсюда можно сделать вывод, что Cancel = True это кардинальное решение, - типа "харэ" или "стапэ" от слова "ваще..." А мой пример в вашем случае скорее всего сводится на нет действиями из других событий, следующих за Exit этого или других элементов управления... У Евгения Серебрякова не его "Кирпичиках кода" есть пример Подсветка активного поля в форме Вот я его и пытаюсь встроить в программу. Считайте, что встроил. Мелочь, а удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:25 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
JossМогу даже уточнить. Фокус получает включенный переключатель. Если такого нет, то фокус получает самый верхний переключатель. Если же таких несколько (выстроены в ряд), то самый левый из ряда.Не совсем так. Если нет выбранного переключателя, то фокус получает тот переключатель, который был добавлен в группу раньше остальных. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:31 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
JossУ Евгения Серебрякова не его "Кирпичиках кода" есть пример Подсветка активного поля в форме Вот я его и пытаюсь встроить в программу. Считайте, что встроил. Мелочь, а удобно. Еще раз убедился, что наличие кода предполагает как минимум наличие глюков... В лоб "кирпичик" не пошел, пришлось переделать Optional mrk As Boolean = False на явно... По мне так лучше без кода от слова совсем, если есть такая возможность... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 13:19 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
__MichelleНе совсем так. Если нет выбранного переключателя, то фокус получает тот переключатель, который был добавлен в группу раньше остальных. Проходили. Возьми последний переключатель и подыми его выше всех. Да, он будет получать фокус последним в группе. Затем закрой базу (с сохранением изменений - ес-но) Открой заново. И... Опа-на! Этот переключатель получает фокус первым! Я уже об этом писал где-то полгода назад. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 13:32 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
vmagЕще раз убедился, что наличие кода предполагает как минимум наличие глюков... В лоб "кирпичик" не пошел, пришлось переделать Optional mrk As Boolean = False на явно... По мне так лучше без кода от слова совсем, если есть такая возможность... Я то-же об этом подумывал. Но дело в том, что у меня есть 3 типа полей. 1 - недоступные (серые) 2 - доступные, но не в фокусе (белые) 3 - доступное в фокусе (желтое) Но если полей всего 2 типа, то Ваше предложение - то, что надо ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 13:38 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
Joss__MichelleНе совсем так. Если нет выбранного переключателя, то фокус получает тот переключатель, который был добавлен в группу раньше остальных. Проходили. Возьми последний переключатель и подыми его выше всех. Да, он будет получать фокус последним в группе. Затем закрой базу (с сохранением изменений - ес-но) Открой заново. И... Опа-на! Этот переключатель получает фокус первым! Я уже об этом писал где-то полгода назад. Ну, что ж... Закрыла. Открыла. Все по инструкции.))) При переходе по контролам формы - фокус в группе получает "родившийся первым", хоть и стоит самым правым. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 14:00 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
__MichelleНу, что ж... Закрыла. Открыла. Все по инструкции.))) При переходе по контролам формы - фокус в группе получает "родившийся первым", хоть и стоит самым правым. Я тоже проверил (в том своем примере, который db3), передвинул 5-ю кнопку наверх перед первой, сохранил и вышло все как говорил товарищ Joss - стала рулить 5-я кнопка вместо 1-й... У меня расположение группы вертикальное... похоже случай неустойчивый, но имеет место быть... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 14:11 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
Поведение моих переключателей сохраняется даже после сжатия. Фокус получает правый переключатель. Уточняю: мы ведь говорим о случае, когда группе переключателей не присвоено значение. И значения по умолчанию нет. То есть, все переключатели "погашены". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 14:20 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
__MichelleНу, что ж... Закрыла. Открыла. Все по инструкции.))) При переходе по контролам формы - фокус в группе получает "родившийся первым", хоть и стоит самым правым. А расстояние от верхнего края у них какие? Надо бы хотя бы на сотку отличаться. Если высоты одинаковые или очень близкие, то здесь как раз рулит порядок вставки на форму. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 14:21 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
__MichelleПоведение моих переключателей сохраняется даже после сжатия. Фокус получает правый переключатель. Уточняю: мы ведь говорим о случае, когда группе переключателей не присвоено значение. И значения по умолчанию нет. То есть, все переключатели "погашены". Выложите Ваш примерчик, посмотрю. Очень интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 14:23 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
Joss, Ага... Переместила правый переключатель ниже, теперь фокус получает не он. Поставила его выше всех - опять фокус к нему приходит. Значит, берется "верхний", а если все на одном уровне по горизонтали, то "первый". Занятно. Если надобность в примере не отпала, то вечером. Сейчас нужно в Москву съездить. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 14:32 |
|
Баг или фича? О фокусе группы переключателей...
|
|||
---|---|---|---|
#18+
__MichelleJoss, Ага... Переместила правый переключатель ниже, теперь фокус получает не он. Поставила его выше всех - опять фокус к нему приходит. Значит, берется "верхний", а если все на одном уровне по горизонтали, то "первый". Занятно. Если надобность в примере не отпала, то вечером. Сейчас нужно в Москву съездить. Как я и писал. Сначала берётся самый верхний, затем тот что пониже. Значит я ошибся на счёт правого при одинаковом уровне. Возможно... Пример не нужен. То, что порядок получения фокуса переключателем не зависит от порядка его появления на форме, а только от его местоположения, Вы убедились. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 14:50 |
|
|
start [/forum/topic.php?fid=45&fpage=57&tid=1611709]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 150ms |
0 / 0 |