powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Зараза Hide()
7 сообщений из 7, страница 1 из 1
Зараза Hide()
    #33613636
Alex45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Избавился от проблемы, но остался вопрос ПОЧЕМУ?

Вариант 1. (НЕ работает) Из основной формы вызываю
....
LOCAL Form1
Form1 = CreateObject("MyForm")
Form1.Show(1)
* в Form1 закрываю форму по Thisform.hide()
Form1.Release()
MODIFY LABEL "c:\baza\labels\label1.lbx" NOENVIRONMENT
.....
В итоге команда MODIFY LABEL не выполняется, а происходит зависание,
из которого можно выйти закрыв основную форму. Причем, при разных
вариантах вызова MODIFY LABEL (из меню или с помощью кнопки) результат
непредсказуемый. Может запуститься, а может и нет.

Вариант 2. (работает) Из основной формы вызываю
.....
LOCAL Form1
Form1 = CreateObject("MyForm")
Form1.Show(1)
* в Form1 закрываю форму по Form1.Release()
MODIFY LABEL "c:\baza\labels\label1.lbx" NOENVIRONMENT
.....
команда MODIFY LABEL срабатывает отлично
Что происходит? И как после этого использовать hide() ?
...
Рейтинг: 0 / 0
Зараза Hide()
    #33618780
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Alex45!

Видимо не успевает уничтожится форма и это мешает - попробуй задержку
добавить - DOEVENTS+INKEY(0.1) или что-то подобное.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Зараза Hide()
    #33618968
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Alex45
У тебя та же проблема , что и у . меня .
Я подозреваю, что это происходит из-за модальности формы (Form1.Show(1)). Хоть форма и скрыта, но она держит на себе все внимание, а так как там уже выполнять нечего, то программа висит.
PS Пусть гуру дадут более взвешенное объяснение...

---------------------------------------------
Кто в армии служил - тот в цирке не смеется
...
Рейтинг: 0 / 0
Зараза Hide()
    #33622026
Alex45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi
По поводу использования задержки, пробовал так

Form1.Release()
INKEY(2)
MODIFY LABEL "c:\baza\labels\label1.lbx" NOENVIRONMENT

не помогает.
Влияние модальности формы возможно, show(2) не ставил, т.к. мне нужна
именно модальность. И, кроме того, примочка в том, что неприятности
происходят ПОСЛЕ закрытия формы Form1.Release().
Пробовал даже

Form1.Release()
Form1 = NULL
RELEASE Form1
MODIFY LABEL "c:\baza\labels\label1.lbx" NOENVIRONMENT

это тоже не помогает, хотя уже и объекта нет и сама переменная исчезла.
Кстати и MODIFY REPORT (в данной ситуации) тоже работает хреново.
Лечение одно - отказаться от hide().
...
Рейтинг: 0 / 0
Зараза Hide()
    #33622054
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Inkey() - это не совсем то, что нужно. Необходим именно DOEVENTS.

Код: plaintext
1.
2.
3.
4.
5.
6.
LOCAL Form1
Form1 = CreateObject("MyForm")
Form1.Show( 1 )
Form1.Release()
DOEVENTS
MODIFY LABEL "c:\baza\labels\label1.lbx" NOENVIRONMENT

И еще попробуй разнести команды в разные модули. Т.е. вызов и закрытие формы в одном модуле (методе), а вызов на модификацию карточки - в другом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DO ShowForm
MODIFY LABEL "c:\baza\labels\label1.lbx" NOENVIRONMENT

PROCEDURE ShowForm
LOCAL Form1
Form1 = CreateObject("MyForm")
Form1.Show( 1 )
* в Form1 закрываю форму по Thisform.hide()
Form1.Release()
RETURN
ENDPROC

Здесь фокус в том, что завершение процедуры работает примерно так же как и DOEVENTS. Т.е. это место, в которое может "втиснуться" не дообработанные события.
...
Рейтинг: 0 / 0
Зараза Hide()
    #33624868
Alex45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привожу тестовую программу. Проще некуда.

* vfp 8sp1
LOCAL o2
o2 = CREATEOBJECT('form1')
o2.show(1)
RETURN

DEFINE CLASS form1 AS form

ScaleMode = 0
DoCreate = .T.
Caption = "Form"
Name = "form1"

ADD OBJECT command1 AS commandbutton WITH ;
Top = 0.80, ;
Left = 2.40, ;
Height = 1.80, ;
Width = 36.80, ;
Caption = "Command1 Run Modal form", ;
Name = "Command1"

ADD OBJECT command2 AS commandbutton WITH ;
Top = 3.20, ;
Left = 2.40, ;
Height = 1.80, ;
Width = 46.80, ;
Caption = "Command2 Run Modify Label or Report", ;
Name = "Command2"

PROCEDURE command1.Click
LOCAL o1
o1 = CREATEOBJECT('form2')
o1.show(1)
o1.release
DOEVENTS

ENDPROC

PROCEDURE command2.Click
* MODIFY LABEL "c:\magazin\labels\label1.lbx" NOENVIRONMENT
MODIFY REPORT "c:\magazin\reports\report1.frx" NOENVIRONMENT
ENDPROC
ENDDEFINE

DEFINE CLASS form2 AS form
ScaleMode = 0
Top = 0.00
Left = 0.00
Height = 8.40
Width = 59.60
DoCreate = .T.
Caption = "Form"
Name = "form2"

ADD OBJECT command1 AS commandbutton WITH ;
Top = 0.80, ;
Left = 4.80, ;
Height = 1.80, ;
Width = 36.80, ;
Caption = "Command Do Hide()", ;
Name = "Command1"

PROCEDURE command1.Click
Thisform.Hide()
ENDPROC
ENDDEFINE

У меня она НЕ РАБОТАЕТ. Если не нажимать кнопку "Command1 Run Modal form"
то все ничего, но, стоит нажать кнопку "Command Do Hide()", все НЕ работает.
Если это баг, нет вопросов. Но я сто раз подумаю, прежде чем применить hide() впредь. Куда втыкать DOEVENTS ???
Версию 9 я не использую. С 9-й версией программа начинает страшно тормозить.
Искать причину желания нет.
...
Рейтинг: 0 / 0
Зараза Hide()
    #33625528
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Alex45!

На твоём сесте я бы "сто раз подумал" о куче модальных форм, вызываемых друг
из друга (к твоему сведению MODIFY REPORT также открывает окно дизайнера в
модальном виде). Хотя конечно баг налицо - если тебе это важно, то он
присутствует и в VFP9SP1 - можешь писать багрепорт :)

P.S. причины "торможения" в VFP9 обсуждались неоднократно - это и ошибка
оптимизатора, игнорирующего индексы с STR (исправлена в SP1), и отключение
использования индексов для таблиц, имеющих CPDBF()#CPCURRENT() (это в SP1
можно обойти путём установки SET ENGINEBEHAVIOUR 80 - но в общем случае так
делать не стоит - т.к. потенциально возможны ошибки в выборках).

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Зараза Hide()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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