Клиент-скрипт. Переход к следующему контролу «по табуля
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Чт Дек 31, 2009 09:23  Клиент-скрипт. Переход к следующему контролу «по табуля |
|
Полезность: Нет оценки
|
Коллеги!
Есть ли возможность перейти программно в клиент-скрипте к следующему контролу экранной формы (не зная его) так, как если бы была нажата кнопка TAB? Как это можно реализовать? |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Чт Дек 31, 2009 09:34   |
|
Полезность: Нет оценки
|
Но надо так, чтобы запустилась серверная валидация для контрола, с которого уходим.
Научились нажимать TAB, но это не вызывает валидацию.  |
|
 |
lexus Профи
Вступление в Клуб: 28.09.2007
|
Чт Дек 31, 2009 09:36   |
|
Полезность: 1
|
Может вот это поможет...
Цитата: | Описание
Для контрола типа "Форма" и всех контролов на форме, начиная с 100 версии модуля "Навигатор", доступно на чтение свойство Controls.
<...>
Контролы в коллекции Controls отсортированы в порядке обычного обхода по клавише Tab (т.е. если контрол С1 расположен на форме выше С2, либо на той же высоте, но левее, то С1 имеет меньший индекс в коллекции Controls, чем С2). |
Это из Приложения 4 к доке по Админу словаря.
То есть ,вычислить след контрол можно, а как потом фокус на него переместить...  |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Чт Дек 31, 2009 10:06   |
|
Полезность: Нет оценки
|
lexus пишет: | Цитата: | Описание
Контролы в коллекции Controls отсортированы в порядке обычного обхода по клавише Tab (т.е. если контрол С1 расположен на форме выше С2, либо на той же высоте, но левее, то С1 имеет меньший индекс в коллекции Controls, чем С2). |
|
Если контролы в этом массиве расположены не в порядке обхода, а согласно расположению на ЭФ (собственно так я трактую эту фразу), то это не подходит. Ведь программер на ЭФ может задать свой порядок обхода.
Мы пробовали вот такой вариант:
Код: | Private Sub Form1_OnKeyDown(KeyCode, Shift)
If KeyCode = 118 then
set WshShell = CreateObject ("WScript.Shell")
WshShell.SendKeys "^I"
call Form1.ScriptPostEvent(BTN_GET_LAST_CLIENT,"CLICK")
end if
End Sub |
Событие нажатия "Shift+TAB" успешно инициируется, курсор переходит в соответствующее поле, ScriptPostEvent тоже отрабатывает, но вот валидации контрола, из которого мы ушли, не происходит. Если убрать ScriptPostEvent, то почему-то валидатор вызывается. |
|
 |
lexus Профи
Вступление в Клуб: 28.09.2007
|
Чт Дек 31, 2009 10:12   |
|
Полезность: Нет оценки
|
Валидатор должен отрабатывать клиентский или серверный?
Может явно его вызывать..? |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Чт Дек 31, 2009 10:13   |
|
Полезность: Нет оценки
|
lexus пишет: | Валидатор должен отрабатывать клиентский или серверный?
Может явно его вызывать..? |
Валидатор серверный.
Вызывал валидатор конкретного контрола - все работает, но ведь контролов много и в каждом из них может быть нажата кнопка F7, которую мы перехватываем. |
|
 |
lexus Профи
Вступление в Клуб: 28.09.2007
|
Чт Дек 31, 2009 10:19   |
|
Полезность: Нет оценки
|
ну тогда идеи иссякли  |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|