powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как программно перейти к следующему объекту на форме?
12 сообщений из 12, страница 1 из 1
Как программно перейти к следующему объекту на форме?
    #34158598
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Ну проблемка даже несколько глубже порылась... короче в гриде из 3х колонок enabled=.t. тока у третьей. и вот юзьвери при заполнении оной колонки хотят ентером переходить на следующую строку, а не оставацца в той же.
1) Как это сделать?
я сделал в объекте textbox третьей колонки в событии keypress на 13 код (по самому гриду это не канает) методом
Код: plaintext
1.
2.
   CASE nKeyCode =  13  && Enter
       KEYBOARD '{DNARROW}'
. теперь юзеры хочут достигнув последней строки в гриде и втулив туды цифер по нажатию ентера перейти на следующий объект.
2) как сделать это?
я попробовал опирацца на eof() в том же месте, где ентер ловлю, но сия фукция почему-то всегда и везде и в последней строке втч дает сиравно .F. - не подходит...
В итоге выход мне видицца такой = там, где обрабатываю ентер, на клавишу ТАВ вписать setfocus тока не знаю как узнать какой объект у мну следующий в порядке таб-ордера, чтобы на него фокусом приложицца... тупо прописывать на какой конкретно объект, смотря на форму - не хочецца, хочецца универСальности :)
чегой-то типа
thisform.taborder.nextobject.setfocus или thisform.taborder.next
...
Рейтинг: 0 / 0
Как программно перейти к следующему объекту на форме?
    #34158663
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй в объекте textbox LostFocus() прописать что-то типа
Код: plaintext
1.
2.
3.
4.
skip in mytable
if eof('mytable')
   * Переход на следующий грид
endif
...
Рейтинг: 0 / 0
Как программно перейти к следующему объекту на форме?
    #34158666
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У объектов есть свойство TabIndex.
Вот перебирай обьекты на форме , ищи у которого табиндекс следующий - и переходи на него
...
Рейтинг: 0 / 0
Как программно перейти к следующему объекту на форме?
    #34158697
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну есь такое свойство - TabIndex. Оно задает объекту порядок установки фокуса при перемещении кнопулей ТАВ. можно установить програмно иное, можно узнать текущее значение.
ну я, допустим, понимаю так - мне нужен объект TabIndex+1 и как одуплить его название?
не могу ж я написать
thisform.TabIndex+1.setfocus
???
...
Рейтинг: 0 / 0
Как программно перейти к следующему объекту на форме?
    #34158703
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПопробуй в объекте textbox LostFocus() прописать что-то типа
Код: plaintext
1.
2.
3.
4.
skip in mytable
if eof('mytable')
   * Переход на следующий грид
endif
вот по-подробнее сам * Переход на следующий грид... а если не грид? нада на объект следующий, исходя из табордера.
...
Рейтинг: 0 / 0
Как программно перейти к следующему объекту на форме?
    #34158735
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получаем с помощью AMEMBERS обьекты формы - далее поиск по массиву
...
Рейтинг: 0 / 0
Как программно перейти к следующему объекту на форме?
    #34158886
ORAselect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все просто.

Thisform.MyObj.SetFocus()
...
Рейтинг: 0 / 0
Как программно перейти к следующему объекту на форме?
    #34158952
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=AlexiS=-Получаем с помощью AMEMBERS обьекты формы - далее поиск по массиву т.е. ниче проще нету чем путем конверсии:) в массив? т.е. нада сложить имена всех объектов в массив и из него достать элемент TabIndex+1 и тем самым получить его имя? тока в хелпах по этой фукции я ниче нащет TabIndex не увидел... а оно массив-то по соотвецтвию с TabIndex формы выложит?
ORAselectВсе просто.
Thisform.MyObj.SetFocus() дык вопрос-то собсенна в том, как получить MyObj через TabIndex
...
Рейтинг: 0 / 0
Как программно перейти к следующему объекту на форме?
    #34159266
ORAselect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
посмотри в запущенном виде _screen.activeform.... в дебаге. Там все видно.
...
Рейтинг: 0 / 0
Как программно перейти к следующему объекту на форме?
    #34159275
ORAselect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, вся форма - сплошной масив.
thisform.controls
thisform.objects
...
Рейтинг: 0 / 0
Как программно перейти к следующему объекту на форме?
    #34160304
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем попробовал я сделать так (это в текстбоксе грида):
Код: plaintext
1.
2.
3.
       DECLARE laObjects( 1 )
       AMEMBERS(laObjects,thisform, 2 )
       m.oNextObjName = laObjects(this.Parent.Parent.TabIndex+ 1 )
       thisform.&oNextObjName.SetFocus
выдает ошибку, мол объект не найден, а он SetFocus к имени объекта лепит и есенно не находит такого. например у меня вышло Object LBLCASETYPESETFOCUS is not found
немного переделал
Код: plaintext
1.
2.
3.
4.
       DECLARE laObjects( 1 )
       AMEMBERS(laObjects,thisform, 2 )
       m.oNextObjName = laObjects(this.Parent.Parent.TabIndex+ 1 )+".SetFocus"
       thisform.&oNextObjName
те же грабли... пора надевать резиновый набалдашник, шоб по лбу сильно не лупило
затем сделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
       DECLARE laObjects( 1 )
       AMEMBERS(laObjects,thisform, 2 )
       m.oNextObjName = laObjects(this.Parent.Parent.TabIndex+ 1 )
       MESSAGEBOX(oNextObjName)
       WITH thisform.&oNextObjName
            .SetFocus
       ENDWITH 
грит Property SETFOCUS is not found

В любом случае, таким образом выходит что у меня следующим объектом идет тот самый лейбл LBLCASETYPE, что совершенно не соответствует раздаче TabOrder-a на форме да и смотрел я полученный массив - там вообще порядок совершенно не такой как на форме и TabOrder-у не соответствует, чего и следовало ожидать...
че делать?
...
Рейтинг: 0 / 0
Как программно перейти к следующему объекту на форме?
    #34160443
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
заработало вот так(это в текстбоксе грида):
Код: plaintext
1.
2.
3.
4.
5.
6.
       DECLARE laObjects( 1 )
       AMEMBERS(laObjects,thisform, 2 )
       m.lsNextObjName = laObjects( 1 )
       m.lsRunString = "thisform." + m.lsNextObjName + ".SetFocus"
       RELEASE laObjects, m.lsNextObjName
       &lsRunString
выходит что AMEMBERS первым элементом выдает следующий объект и от него по кругу, что-ли, нумерует остальные...
Вот только не знаю насколько грамотна такая организация перехода кнопкой ТАВ из грида на следующий объект формы... может как-то по-другому надо/можно/лучше?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как программно перейти к следующему объекту на форме?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]