powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Куда уходит фокус?
17 сообщений из 17, страница 1 из 1
Куда уходит фокус?
    #32958525
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравстуйте всем!
Я никак не могу понять поведение приложения при следующей ситуации. Есть форма. Запускаю метод формы. В методе создаю объекты формы и делаю видимой кнопку на форме. После отработки метода объекты удаляю, а кнопку прячу. И приложение повисает (загрузка проца 99%). Если трассирую эти шаги, то все нормально - приложение работает дальше как положено! Что я делаю не так?
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32958812
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кузнецов ИгорьЧто я делаю не так?
Не приводишь здесь код метода...
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959026
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понятия не имею но если вернется скажите что мы его все здесь очень ждем

согласен с редриком
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959141
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит, по крайней мере, схема моих действий явных ошибок пока не имеет. Попробую привести важные части кода.
Цепочка начинается от выбора пункта меню в форме верхнего уровня. Команда:
Код: plaintext
THISFORM.enter_again
В этом методе:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
THISFORM.ADDOBJECT("edit1","EditBox")
...* устанавливаю свойства этого объекта
THISFORM.ADDOBJECT("edit2","EditBox")
...* устанавливаю свойства этого объекта
THISFORM.COMMAND2.VISIBLE=.T.
* еще изменяю кое-какие свойства и переменные 
THISFORM.EDIT1.SetFocus
Далее по событию Clik кнопки Command2 выполняется два вида действия. Структура такая:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DO CASE
CASE THISFORM.COMMAND2.CAPTION = "Ввод"
        * выполняется то, что мне надо
          THISFORM.COMMAND2.CAPTION="Готово"
CASE INLIST(THISFORM.COMMAND2.CAPTION,"Готово","Выйти")
       * этот участок привожу полностью
	THISFORM.LowStatus.Panels.Item( 1 ).Text= THISFORM.c_oldstatus
	THISFORM.CONTAINER1.LABEL1.CAPTION= THISFORM.c_oldmode
	THISFORM.RemoveObject("edit1")
	THISFORM.RemoveObject("edit2")
	THISFORM.COMMAND2.CAPTION= "Ввод"
	THISFORM.COMMAND2.VISIBLE= .F.
	THISFORM.TIMER1.INTERVAL= 1000 *VAL(BILLING_UPDATE_TIME)
	THISFORM.REFRESH
ENDCASE
При первом нажатии выполняются нужные вычисления, а при втором скрываются и удаляются ненужные объекты.
Почему после второго нажатия кнопки объекты не удалились, а само приложение то ли зависло, то ли зациклилось?
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959171
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
???

DO CASE
CASE THISFORM.COMMAND2.CAPTION = "Ввод"
* выполняется то, что мне надо
THISFORM.COMMAND2.CAPTION="Готово"
CASE INLIST(THISFORM.COMMAND2.CAPTION,"Готово","Выйти")
* этот участок привожу полностью
messagebox('Абдула я здесь!')

THISFORM.LowStatus.Panels.Item(1).Text= THISFORM.c_oldstatus
THISFORM.CONTAINER1.LABEL1.CAPTION= THISFORM.c_oldmode
THISFORM.RemoveObject("edit1")
THISFORM.RemoveObject("edit2")
THISFORM.COMMAND2.CAPTION= "Ввод"
THISFORM.COMMAND2.VISIBLE= .F.
THISFORM.TIMER1.INTERVAL=1000*VAL(BILLING_UPDATE_TIME)
THISFORM.REFRESH
ENDCASE

и подвигать сообщение что-бы узнать где виснет
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959195
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что у тебя висит на таймере?

Ты меняешь интревал срабатывания таймера, а включение/отключение не надо отрабатывать?

PS: лично я предпочитаю не создавать/удалять объекты, а активизировать нужную страницу PageFrame. Т.е. на форму кладется PageFrame со свойством Tabs=.F. и по нужному событию открывается нужная страница (ActivePage = 1). Так проще модифицировать дизайн формы
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959231
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таймер управляется нормально. При входе в процедуру enter_again я останавливаю этот таймер, а по окончании - вновь запускаю. Отработка событий таймера не мешает этому методу.

Совет в виде messagebox('Абдула я здесь!') я проделывал с использованием set step on.
Работает метод правильно, если окончание метода написать так:
Код: plaintext
1.
2.
...
set step on
endcase
или так:
Код: plaintext
1.
2.
3.
...
endcase
set step on
return
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959258
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Абдула, я здесь!" тоже выскакивает, а потом программа все же виснет, зараза!
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959265
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так выскакивает
может всё таки таймер
DO CASE
CASE THISFORM.COMMAND2.CAPTION = "Ввод"
* выполняется то, что мне надо
THISFORM.COMMAND2.CAPTION="Готово"
CASE INLIST(THISFORM.COMMAND2.CAPTION,"Готово","Выйти")
* этот участок привожу полностью

THISFORM.LowStatus.Panels.Item(1).Text= THISFORM.c_oldstatus
THISFORM.CONTAINER1.LABEL1.CAPTION= THISFORM.c_oldmode
THISFORM.RemoveObject("edit1")
THISFORM.RemoveObject("edit2")
THISFORM.COMMAND2.CAPTION= "Ввод"
THISFORM.COMMAND2.VISIBLE= .F.
THISFORM.TIMER1.INTERVAL=1000*VAL(BILLING_UPDATE_TIME)
THISFORM.REFRESH
messagebox('Абдула я здесь!')
ENDCASE
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959279
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, так тоже выскакивает. Объекты удаляются, кнопка скрывается. И программа виснет. Ответьте мне - куда переводится фокус после этого?
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959298
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на мой взляд согласно таб последовательности или не так
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959310
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Убери фокус руками на какой-нибудь контрол.
2. Не вызывай таймер, посмотри, что получиться
3. Посмотри м.б. где-то используется конструкция WITH..ENDWITH
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959342
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А фокус можно перевести на контрол у которого VISIBLE=.F.? А то у меня видимых не осталось. Менюшка разве что!
Таймер не вызываю - он заранее остановлен.
Конструкция WITH..ENDWITH используется только на этапе подготовки объектов. В событии Click её нет.

Прошу прощения - ухожу домой. На форуме появлюсь завтра после 8-00.
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959351
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМЧто у тебя висит на таймере?
А этот вопрос-то остался без ответа!
Ты говоришь, что "таймер управляется нормально"... А делает он что ?
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959379
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А фокус можно перевести на контрол у которого VISIBLE=.F.?
по таб последовательности с учетом видимости
ты же не можешь поставить фокус на лабел например?
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959896
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Игорь!

Сделай объект куда МОЖЕТ уйти фокус - например Textbox фонового цвета/мелкого размера/за пределами видимой части формы. Возможно что именно из-за отсутствия контрола куда может уйти фокус у тебя всё и висит...
Это я так понял AsTopLevel форма? Меню на ней-же? Других форм в это время нету?
И ещё - указывай pls версию фокса (в т.ч. и SP)

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Куда уходит фокус?
    #32959976
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, Igor Korolyov , ваш совет помог. Действительно, дополнительный (и единственный со свойством VISIBLE=.T.) контрол взял на себя фокус и программа отработала этот участок нормально.
Чтобы не оставлять повисшие вопросы, все же дам на них ответы.
На таймере висит очень большой кусок программы, который занимается пополнением базы. Уверяю вас, что при проверке данной трудности этот участок кода никак не задействуется.
Igor Korolyov Это я так понял AsTopLevel форма? Меню на ней-же? Других форм в это время нету?
Да все правильно.
Фокс- VFP 6.0 + SP5
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Куда уходит фокус?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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