Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как удалить FORM в зародыше (т.е. в INIT) / 11 сообщений из 11, страница 1 из 1
18.06.2004, 13:34
    #32567219
ilya_sql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить FORM в зародыше (т.е. в INIT)
Как удалить FORM в зародыше (т.е. в INIT)?
Так вот не получается:

Код: plaintext
1.
&& Form1::Init
this.Release
...
Рейтинг: 0 / 0
18.06.2004, 13:36
    #32567226
alexFV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить FORM в зародыше (т.е. в INIT)
Попробуй Return .F.
...
Рейтинг: 0 / 0
18.06.2004, 13:39
    #32567242
ilya_sql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить FORM в зародыше (т.е. в INIT)
>Попробуй Return .F.

Не получается.
...
Рейтинг: 0 / 0
18.06.2004, 14:08
    #32567350
alexFV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить FORM в зародыше (т.е. в INIT)
Что не получается?
return .F. надо вместо this.release(), ты делаешь так?
...
Рейтинг: 0 / 0
18.06.2004, 14:30
    #32567411
ilya_sql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить FORM в зародыше (т.е. в INIT)
Если поставить
Код: plaintext
return .F. 
вместо
Код: plaintext
this.Release
, то NewObject() возвращает .F.
В итоге объект явно не показывается, НО он находится в памяти (т.е. в _screen.Forms его можно 'пощупать'). Необходимо, чтобы объект FORM сразу удалил себя.
...
Рейтинг: 0 / 0
18.06.2004, 15:03
    #32567559
alexFV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить FORM в зародыше (т.е. в INIT)
Быстро набросал и все OK.

Код: plaintext
1.
2.
3.
4.
5.
oForm = NEWOBJECT('FORM1')
DEFINE CLASS FORM1 as Form
	PROCEDURE init
		RETURN .F.
	ENDPROC  
ENDDEFINE 

Приведи фрагмент кода.
...
Рейтинг: 0 / 0
18.06.2004, 16:10
    #32567755
ilya_sql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить FORM в зародыше (т.е. в INIT)
Я уже писал код подобный твоему, и выяснил, что NewObject() возвращает .F. (в твоем случае oForm=.F. ) при этом объект на самом деле не уничтожается.
...
Рейтинг: 0 / 0
18.06.2004, 16:55
    #32567876
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить FORM в зародыше (т.е. в INIT)
Что значит "объект на самом деле не уничтожается". Как именно ты убедился в этом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
?_SCREEN.FormCount
oForm = NEWOBJECT('FORM1')
?_SCREEN.FormCount

DEFINE CLASS FORM1 as Form
	PROCEDURE init
		RETURN .F.
	ENDPROC  
ENDDEFINE 

Получаем два нуля. Никаких форм не остается - нечего "щупать". Или ты говоришь о каком-то другом объекте?
...
Рейтинг: 0 / 0
18.06.2004, 17:32
    #32567978
Как удалить FORM в зародыше (т.е. в INIT)
Интересная тема...
Только вот непонятно мне, на фига создавать форму, которая тут же сама себя уничтожает? Если только для общего развития... :)))
И как-то все забыли, что в функции NEWOBJECT можно передать в метод Init объекта некоторые аргументы, которые в этом методе потом проанализировать и, может быть, что-то сделать. Хотя я бы воспользовался функцией CreateObject - меньше аргументов требует...
...
Рейтинг: 0 / 0
19.06.2004, 09:31
    #32568328
ilya_sql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить FORM в зародыше (т.е. в INIT)
Конечно же я был неправ! Видимо объект остался от предыдущих манипуляций. :) Эта ошибка заставила меня обратиться в форум.

->Вячеслав Клепинин
Это своего рода концепция Smart Object. Есть ситуации, когда объект сам должен определять создаваться ему или нет. Да, согласен, выглядит это на первый взгляд иррационально, но зато с точки зрения концепции все достаточно 'гладко' (чем-то приходится жертвовать).
Я думаю, что CreateObject и NewObject не даром нашли свое отражение в языке (предполагаю, что и входили в состав языка в том порядке, в котором я их написал). Я предпочитаю пользоваться NewObject(), т.к., на мой взгляд, она более универсальная.
...
Рейтинг: 0 / 0
21.06.2004, 11:02
    #32569140
Как удалить FORM в зародыше (т.е. в INIT)
to ilya_sql

Видите ли, Илья, то, как Вы сформулировали вопрос, несколько меня озадачило. Во-первых, это напомнило мне не так давно обсуждавшийся на другом форуме этого сайта вопрос "Как убить FoxPro" - вопрос обсуждался очень активно и, я бы сказал, агрессивно по оношению к нашему любимому продукту.
Потом я подумал, что Вам непонятно, почему не отрабатывает метод Release при вызове его из Init.
Но всё оказалось проще.
Так что без обид! :)))
А функция NEWOBJECT действительно появилась позже, чем CREATEOBJECT, и отличается от последней только тем, что при создании объекта можно явно указать его "месторасположение" - чем Вы в своих примерах, кстати, не пользуетесь.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как удалить FORM в зародыше (т.е. в INIT) / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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