CftClub.ru
Клуб специалистов ЦФТ-Банк

Клиент-скрипт. Переход к следующему контролу «по табуля

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
timochev
Эксперт


Вступление в Клуб: 02.07.2007
СообщениеЧт Дек 31, 2009 09:23   Клиент-скрипт. Переход к следующему контролу «по табуля Ответить с цитатой
Полезность: Нет оценки
Коллеги!
Есть ли возможность перейти программно в клиент-скрипте к следующему контролу экранной формы (не зная его) так, как если бы была нажата кнопка TAB? Как это можно реализовать?
timochev
Эксперт


Вступление в Клуб: 02.07.2007
СообщениеЧт Дек 31, 2009 09:34    Ответить с цитатой
Полезность: Нет оценки
Но надо так, чтобы запустилась серверная валидация для контрола, с которого уходим.
Научились нажимать TAB, но это не вызывает валидацию. Evil or Very Mad
lexus
Профи


Вступление в Клуб: 28.09.2007
СообщениеЧт Дек 31, 2009 09:36    Ответить с цитатой
Полезность: 1
Может вот это поможет...
Цитата:
Описание

Для контрола типа "Форма" и всех контролов на форме, начиная с 100 версии модуля "Навигатор", доступно на чтение свойство Controls.

<...>
Контролы в коллекции Controls отсортированы в порядке обычного обхода по клавише Tab (т.е. если контрол С1 расположен на форме выше С2, либо на той же высоте, но левее, то С1 имеет меньший индекс в коллекции Controls, чем С2).


Это из Приложения 4 к доке по Админу словаря.
То есть ,вычислить след контрол можно, а как потом фокус на него переместить... Question
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    Ответить с цитатой
Полезность: Нет оценки
ну тогда идеи иссякли Sad
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru