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

согласен с редриком
...
Рейтинг: 0 / 0
14.03.2005, 15:57
    #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
14.03.2005, 16:09
    #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
14.03.2005, 16:15
    #32959195
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда уходит фокус?
Что у тебя висит на таймере?

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

PS: лично я предпочитаю не создавать/удалять объекты, а активизировать нужную страницу PageFrame. Т.е. на форму кладется PageFrame со свойством Tabs=.F. и по нужному событию открывается нужная страница (ActivePage = 1). Так проще модифицировать дизайн формы
...
Рейтинг: 0 / 0
14.03.2005, 16:27
    #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
14.03.2005, 16:34
    #32959258
Кузнецов Игорь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда уходит фокус?
"Абдула, я здесь!" тоже выскакивает, а потом программа все же виснет, зараза!
...
Рейтинг: 0 / 0
14.03.2005, 16:37
    #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
14.03.2005, 16:41
    #32959279
Кузнецов Игорь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда уходит фокус?
Да, так тоже выскакивает. Объекты удаляются, кнопка скрывается. И программа виснет. Ответьте мне - куда переводится фокус после этого?
...
Рейтинг: 0 / 0
14.03.2005, 16:48
    #32959298
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда уходит фокус?
на мой взляд согласно таб последовательности или не так
...
Рейтинг: 0 / 0
14.03.2005, 16:51
    #32959310
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда уходит фокус?
1. Убери фокус руками на какой-нибудь контрол.
2. Не вызывай таймер, посмотри, что получиться
3. Посмотри м.б. где-то используется конструкция WITH..ENDWITH
...
Рейтинг: 0 / 0
14.03.2005, 17:01
    #32959342
Кузнецов Игорь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда уходит фокус?
А фокус можно перевести на контрол у которого VISIBLE=.F.? А то у меня видимых не осталось. Менюшка разве что!
Таймер не вызываю - он заранее остановлен.
Конструкция WITH..ENDWITH используется только на этапе подготовки объектов. В событии Click её нет.

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

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

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


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