7.7 Програмная реализация передачи фокуса между элементами формы
Показывать по
10
20
40
сообщений
- 1
- 2
25.09.2009
14:47
#1
"есть задача:
предположим, что на форме есть 3 кнопки: - Кнопка1, Кнопка2, Кнопка3. нужно чтобы после нажатия пользователем Кнопки1 и выполнения каких-то действий фокус перешел на Кнопку2. После нажатия Кнопки2 фокус перешел на Кнопку3, после нажатия Кнопки3 обратно на Кнопку1.
В виде кода это будет примерно так:
Процедура ПоКнопке1()
...
Сообщить("Выполнены команды Кнопки1");
//Здесь нужно прописать команду перевода фокуса на кнопку2
...
КонецПроцедуры
Процедура ПоКнопке2()
...
Сообщить("Выполнены команды Кнопки2");
//Здесь нужно прописать команду перевода фокуса на кнопку3
...
КонецПроцедуры
Процедура ПоКнопке3()
...
Сообщить("Выполнены команды Кнопки3");
//Здесь нужно прописать команду перевода фокуса на кнопку1
...
КонецПроцедуры
Речь конечно идет не только о кнопках, а вообще обо всех элементах формы, просто с кнопками нагляднее.
В других языках программирования есть специальные команды, например SetFocus в VisualBasic
В крайнем случае это можно сделать послав комбинацию "горячих клавиш" через команду SendKeys, которые эмулируют нажатие пользователем например комбинации "Alt+Подчеркнутая буква".
В 1С я не нашел аналогов этим командам. Такое ощущение, что програмно переустановить фокус в форме невозможно?
Может кто сталкивался. Помогите пожалуйста!"
предположим, что на форме есть 3 кнопки: - Кнопка1, Кнопка2, Кнопка3. нужно чтобы после нажатия пользователем Кнопки1 и выполнения каких-то действий фокус перешел на Кнопку2. После нажатия Кнопки2 фокус перешел на Кнопку3, после нажатия Кнопки3 обратно на Кнопку1.
В виде кода это будет примерно так:
Процедура ПоКнопке1()
...
Сообщить("Выполнены команды Кнопки1");
//Здесь нужно прописать команду перевода фокуса на кнопку2
...
КонецПроцедуры
Процедура ПоКнопке2()
...
Сообщить("Выполнены команды Кнопки2");
//Здесь нужно прописать команду перевода фокуса на кнопку3
...
КонецПроцедуры
Процедура ПоКнопке3()
...
Сообщить("Выполнены команды Кнопки3");
//Здесь нужно прописать команду перевода фокуса на кнопку1
...
КонецПроцедуры
Речь конечно идет не только о кнопках, а вообще обо всех элементах формы, просто с кнопками нагляднее.
В других языках программирования есть специальные команды, например SetFocus в VisualBasic
В крайнем случае это можно сделать послав комбинацию "горячих клавиш" через команду SendKeys, которые эмулируют нажатие пользователем например комбинации "Alt+Подчеркнутая буква".
В 1С я не нашел аналогов этим командам. Такое ощущение, что програмно переустановить фокус в форме невозможно?
Может кто сталкивался. Помогите пожалуйста!"
25.09.2009
14:54
#2
"попробуй это, не проверял
Активизировать(>,);
Синтаксис:
Активизировать(<ИмяРеквизита>,<Режим>)
Назначение:
Активизировать для редактирования поле диалога.
Параметры:
<ИмяРеквизита> - необязательный параметр. Строка с именем поля диалога, которое нужно активизировать. Пустое имя элемента диалога используется для активизации всей формы.
<Режим> - необязательный параметр. Имеет смысл только для строк списков. Число: 1 - войти в режим редактирования, 0 - не входить. Значение по умолчанию - 1.
Замечание:
Метод Активизировать может быть вызван из другого (внешнего) модуля, если в нем известен контекст формы, в которой нужно активизировать элемент диалога. Доступ к методу возможен только в контексте Модуля формы."
Активизировать(>,);
Синтаксис:
Активизировать(<ИмяРеквизита>,<Режим>)
Назначение:
Активизировать для редактирования поле диалога.
Параметры:
<ИмяРеквизита> - необязательный параметр. Строка с именем поля диалога, которое нужно активизировать. Пустое имя элемента диалога используется для активизации всей формы.
<Режим> - необязательный параметр. Имеет смысл только для строк списков. Число: 1 - войти в режим редактирования, 0 - не входить. Значение по умолчанию - 1.
Замечание:
Метод Активизировать может быть вызван из другого (внешнего) модуля, если в нем известен контекст формы, в которой нужно активизировать элемент диалога. Доступ к методу возможен только в контексте Модуля формы."
25.09.2009
15:07
#3
Пробовал. Не работает. У меня сложилось впечатление, что команда Активизировать аналогична флажку "Сделать Недоступным" в свойствах элемента диалога.
25.09.2009
15:22
#5
"Работает. Вопрос: вы имена кнопкам давали?
Элементарный пример. Создаем обработку, кидаем кнопку на форму. В идентификатор пишем "кн1", на закладке дополнительно "ПоКн1()". Аналогично кидаем вторую кнопку (Кн2) и 3-ю (Кн3).
В модуле пишем:
Процедура ПоКн1 ()
Сообщить ("Кн1");
Активизировать ("кн2");
КонецПроцедуры
Процедура ПоКн2 ()
Сообщить ("Кн2");
Активизировать ("кн3");
КонецПроцедуры
Процедура ПоКн3 ()
Сообщить ("Кн3");
Активизировать ("кн1");
КонецПроцедуры
Запускаем и нажимаем Enter раз 5 :)"
Элементарный пример. Создаем обработку, кидаем кнопку на форму. В идентификатор пишем "кн1", на закладке дополнительно "ПоКн1()". Аналогично кидаем вторую кнопку (Кн2) и 3-ю (Кн3).
В модуле пишем:
Процедура ПоКн1 ()
Сообщить ("Кн1");
Активизировать ("кн2");
КонецПроцедуры
Процедура ПоКн2 ()
Сообщить ("Кн2");
Активизировать ("кн3");
КонецПроцедуры
Процедура ПоКн3 ()
Сообщить ("Кн3");
Активизировать ("кн1");
КонецПроцедуры
Запускаем и нажимаем Enter раз 5 :)"
25.09.2009
15:28
#6
"Так не пробовал. Обращался через Активизировать(Форма.Кн1); И не работало. Ваш вариант окказался рабочим.
Между элементами управления (кнопками, флажками ...) перемещается отлично. Но вот загнать фокус на табличную часть формы Справочник.ДляПодбора мне не удалось.
У табличной часть отсутствует идентификатор, который можно забить в команду Активизировать()
Попробовал так, как я обращался к спискам - используя Таб-последовательность. В форму перед полем списка устанавливал ЭлементДиалога в Заголовке подчеркивал одну из букв, и для него вызывал комбинацию Alt+ПодчеркнутаяБуква. Поскольку фокус на элемент диалога установить нельзя, то фокус перескакивал на следующий элемент Таб-последовательности, то есть в нужный мне список. В данном случае я тоже перед табличной частью установил элемент диалога, попытался из кнопки передать фокус на этот элемент. Но фокус как был на кнопке, так там и остался.
Помогайте, что я не так делаю"
Между элементами управления (кнопками, флажками ...) перемещается отлично. Но вот загнать фокус на табличную часть формы Справочник.ДляПодбора мне не удалось.
У табличной часть отсутствует идентификатор, который можно забить в команду Активизировать()
Попробовал так, как я обращался к спискам - используя Таб-последовательность. В форму перед полем списка устанавливал ЭлементДиалога в Заголовке подчеркивал одну из букв, и для него вызывал комбинацию Alt+ПодчеркнутаяБуква. Поскольку фокус на элемент диалога установить нельзя, то фокус перескакивал на следующий элемент Таб-последовательности, то есть в нужный мне список. В данном случае я тоже перед табличной частью установил элемент диалога, попытался из кнопки передать фокус на этот элемент. Но фокус как был на кнопке, так там и остался.
Помогайте, что я не так делаю"
25.09.2009
15:30
#7
"> Работает. Вопрос: вы имена кнопкам давали?
> Элементарный пример. Создаем обработку, кидаем кнопку на форму. В идентификатор пишем "кн1", на закладке дополнительно "ПоКн1()". Аналогично кидаем вторую кнопку (Кн2) и 3-ю (Кн3).
> В модуле пишем:
> Процедура ПоКн1 ()
> Сообщить ("Кн1");
> Активизировать ("кн2");
> КонецПроцедуры
>
> Процедура ПоКн2 ()
> Сообщить ("Кн2");
> Активизировать ("кн3");
> КонецПроцедуры
>
> Процедура ПоКн3 ()
> Сообщить ("Кн3");
> Активизировать ("кн1");
> КонецПроцедуры
>
> Запускаем и нажимаем Enter раз 5
точно - ща проверил, действительно так!"
> Элементарный пример. Создаем обработку, кидаем кнопку на форму. В идентификатор пишем "кн1", на закладке дополнительно "ПоКн1()". Аналогично кидаем вторую кнопку (Кн2) и 3-ю (Кн3).
> В модуле пишем:
> Процедура ПоКн1 ()
> Сообщить ("Кн1");
> Активизировать ("кн2");
> КонецПроцедуры
>
> Процедура ПоКн2 ()
> Сообщить ("Кн2");
> Активизировать ("кн3");
> КонецПроцедуры
>
> Процедура ПоКн3 ()
> Сообщить ("Кн3");
> Активизировать ("кн1");
> КонецПроцедуры
>
> Запускаем и нажимаем Enter раз 5
точно - ща проверил, действительно так!"
25.09.2009
15:45
#8
"На тему возврата к строке справочника после нажатия кнопки (в форме списка или подбора):
Активизировать (Форма.ТекущаяКолонка(), 0);"
Активизировать (Форма.ТекущаяКолонка(), 0);"
- 1
- 2
Читают тему
(гостей: 1)