powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Облатсь видимости переменных и их значений
10 сообщений из 10, страница 1 из 1
Облатсь видимости переменных и их значений
    #35123714
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ситуация. Описывать сложно - приложил пример.


В примере запускаем форму form2.

Жмем кнопку "показать формсет"
В коде прописано :
DO FORM form2 NAME loTest LINKED noshow &&Создаем формсет
loTest.Show(1) && Показать модально - ждем реакцию



IF VARTYPE(loTest)#'O' OR ISNULL(loTest) && Если формсет неуничтожен (то есть по сути скрыт)
&& Код
ENDIF

Показывается формсет - жмем кнопку "скрыть формсет"

Получаем грабли. - переменная loTest - содержит NULL

Так вот вопрос правильное ли это поведение?
Как обойти???

Суть - мне надо проверить что произошло с вызванной формой - выполнили что-то и скрыли формсет или Просто нажали кнопку отменить и выполнили ThisFormSet.Release()
...
Рейтинг: 0 / 0
Облатсь видимости переменных и их значений
    #35123726
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На кнопке "скрыть формсет"
код ThisFormset.visible=.f.

По идее переменная должна содержать ссылку на объект формсета.

Или я не правильно этого ожидаю?
...
Рейтинг: 0 / 0
Облатсь видимости переменных и их значений
    #35123763
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> В примере запускаем форму form2.

Наврал!!!
Надо запускать form3


Причем, если form2 - это реальная форма и в кнопке стоит thisform.visible =
..f. - то все отрабатывает как ожидается.



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Облатсь видимости переменных и их значений
    #35123848
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пот идее нужно определить loTest как PUBLIC, но лутше этого не делать.
Добавим в форму новое свойство
Код: plaintext
ThisForm.AddProperty("oMyObject")
И соответственно меняем в коде loTest на ThisForm.oMyObject и всё будет хорошо.
...
Рейтинг: 0 / 0
Облатсь видимости переменных и их значений
    #35123863
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот ещё (бывает..)
DO FORM form2 NAME loTest LINKED WITH This
В ините FormSet
Код: plaintext
1.
2.
LPARAMETERS oForm
oForm.oMyObject=This
...
Рейтинг: 0 / 0
Облатсь видимости переменных и их значений
    #35123951
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"MiklS" <nospam@sql.ru>; сообщил/сообщила в новостях следующее:
news:5271258@sql.ru...
> Автор: MiklS
> Пот идее нужно определить loTest как PUBLIC, но лутше этого не
> делать.
> Добавим в форму новое свойство
>
> ThisForm.AddProperty("oMyObject")И соответственно меняем в коде loTest на
> ThisForm.oMyObject и всё будет хорошо.


Я вот думаю, что переменная не рушится, т.к. loTest - остается объектом, вот
только isnull(loTest) дает ИСТИНУ

Поэтому как я и думал (сомневался - поэтому проверил) танцы вокруг:
>ThisForm.AddProperty("oMyObject")И соответственно меняем в коде loTest на
>ThisForm.oMyObject и всё будет хорошо.
результатов не дали :(

Вопрос в том это так и должно быть или глюк фокса?

В HELP`е говорится, что весь формсет должен быть скрыт и все.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Облатсь видимости переменных и их значений
    #35124011
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galyamov Rinat... Суть - мне надо проверить что произошло с вызванной формой - выполнили что-то и скрыли формсет или Просто нажали кнопку отменить и выполнили ThisFormSet.Release()

Похожая проблема почитай, причина у тебя та же. Формсет может быть недоуничтожен :)
...
Рейтинг: 0 / 0
Облатсь видимости переменных и их значений
    #35124055
Galyamov RinatНа кнопке "скрыть формсет"
код ThisFormset.visible=.f.

По идее переменная должна содержать ссылку на объект формсета.

Или я не правильно этого ожидаю?
Погонял немного тестовый пример (VFP 9). В общем, выводы следующие:

1. В свойствах FormSet'a установлено AutoRelease = .T. После этого скрытие форм становится аналогичным их удалению. Именно после этого переменная loTest становится NULL.
2. Если в свойствах FormSet'a установить AutoRelease = .F., то формсет не уничтожается и формы "висят" в менюшке Фокса, а loTest # NULL.

Выводы делайте сами...

Кстати, как я проверял (немного поменял функцию OnClick формы Form3):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public loTest

IF VARTYPE(loTest)#'O' OR ISNULL(loTest)
  DO FORM c:\foxes\form2.scx NAME loTest Linked noshow
else
  wait window lotest nowait
Endif

IF VARTYPE(loTest)#'O' OR ISNULL(loTest)
	MESSAGEBOX("Ваш текст")
Else
  loTest.Visible = .t.
  loTest.Show( 1 )
ENDIF

IF VARTYPE(loTest)#'O' OR ISNULL(loTest)
	MESSAGEBOX("Ваш текст")
Else
  loTest.Visible = .t.
  loTest.Show( 1 )
ENDIF
...
Рейтинг: 0 / 0
Облатсь видимости переменных и их значений
    #35124265
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Похожая проблема почитай, причина у тебя та же. Формсет может быть
> недоуничтожен :)

Неа. В той ветке пытаются уничтожить и не могут, а я пытаюсь скрыть - а он
уничтожается. :)


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Облатсь видимости переменных и их значений
    #35124269
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> 1. В свойствах FormSet'a установлено AutoRelease = .T. После этого
> скрытие форм становится аналогичным их удалению. Именно после этого
> переменная loTest становится NULL.
Да. Именно в этом дело.

Но ведь что странно. Determines whether a form set is released when the last
form in the form set is released.
А я скрываю. То ли в HELP`е наврали. То ли баг в фичу превратили. :(

Спасиб.


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


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