powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Дестрой у формы выполняется, а у её компонентов не выполняется!
42 сообщений из 42, показаны все 2 страниц
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771695
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте...
О чем может идти речь если Дестрой у формы выполняется, а у её компонентов не выполняется!
Причем я заметил следующее:
На форме есть грид, а у грида в ините я создаю объект:
this.oRightClick = CREATEOBJECT("empty")
ADDPROPERTY(this.oRightClick, "lSelected", .f.)
ADDPROPERTY(this.oRightClick, "Top", 0)
ADDPROPERTY(this.oRightClick, "Left", 0)
ADDPROPERTY(this.oRightClick, "Height", 0)
ADDPROPERTY(this.oRightClick, "BaseClass", "empty")
ADDPROPERTY(this.oRightClick, "Parent", this)

если строку "ADDPROPERTY(this.oRightClick, "Parent", this)" закоментарить , то форма закроется как положено.
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771713
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
splayn
если строку "ADDPROPERTY(this.oRightClick, "Parent", this)" закоментарить , то форма закроется как положено.
А если не Эзакоментировать, что пишет?
И зачем Grig объект Empty?
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771755
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Читайте Help!!!!!!!
References the container object of a control. Not available at design time; read-only at run time
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771780
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MiklS splayn
если строку "ADDPROPERTY(this.oRightClick, "Parent", this)" закоментарить , то форма закроется как положено.
А если не Эзакоментировать, что пишет?
И зачем Grig объект Empty?

Ничего не пишет, просто все контролы остаются на своих местах, а форму закрыть нельзя, только свернуть или развернуть.

Этот объект необходим при создания всплывающего меню по правому клику на гриде.
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771802
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MiklS Читайте Help!!!!!!!
References the container object of a control. Not available at design time; read-only at run time

in run time тоже самое...
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771810
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Этот объект необходим при создания всплывающего меню по правому клику на гриде.
Зачем он нужен для меню?
Меню можно запустить прямо из TextBox в методе MouseDown
Код: plaintext
1.
2.
IF nButton= 2 
    *Запускаешь меню
ENDIF
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771819
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
read only переводится только для чтения!!!!!!!!!
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771847
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MiklS read only переводится только для чтения!!!!!!!!!
Что Вы этим хотите сказать?
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771885
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поясню...
"Контейнер" empty мне нужен для хранения таких свойств как отступ слева, отступ сверху, ширина меню, родитель и еще пара свойств... по этому при создании формы меню я в форму передаю этот обект...
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771896
в дестрое грида
написать

this.oRightClick = .f.

форма закроется

закрытие формы происходит в след-м порядке

автор
1. Form.queryUnload()
2. Form.destroy()
3. Form.[command buttons].destroy()
4. Form.[objects].destroy()
5. Form.unload()
6. DataEnvironment.afterCloseTables()
7. DataEnvironment.destroy()
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771902
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я уже говорил, Ваш Empty не нужен, но если Вы всётаки хотите сделать всё через ...., то добавляйте этот объект не в Grid, а в саму форму и ссылку делайте на Grid - ADDPROPERTY(this.oRightClick, "MyObject", this.Grid1)
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771930
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если настройки относятся к сущности какого-то объектя, то и объединять
эти объекты нужно таким-же образом

если настройки гридовые, то и объект нужно поднимать у грида

неплохо если это все в библиотек сделано методами наследования
от базовых классов
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771931
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MiklSКак я уже говорил, Ваш Empty не нужен, но если Вы всётаки хотите сделать всё через ...., то добавляйте этот объект не в Grid, а в саму форму и ссылку делайте на Grid - ADDPROPERTY(this.oRightClick, "MyObject", this.Grid1)

Раз уж зашел такой разговор... ВАМ не приходило в голову, что у каждого грида может быть свое собственное меню... мало ли может гридов на форме больше одного... этот "лабораторный" случай я специально привел в качастве примера...
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771936
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пришелмимов дестрое грида
написать

this.oRightClick = .f.

форма закроется

закрытие формы происходит в след-м порядке

автор
1. Form.queryUnload()
2. Form.destroy()
3. Form.[command buttons].destroy()
4. Form.[objects].destroy()
5. Form.unload()
6. DataEnvironment.afterCloseTables()
7. DataEnvironment.destroy()


Это мой дестрой в гриде
UNBINDEVENTS(this)
this.oRightClick = .NULL.
this.ofrmStartmenu = .NULL.
this.osubmenu = .NULL.
DODEFAULT()
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771941
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
просто поставил степ в дестрое формы он выполнился и все.... дестрой у контролов не выполняются...
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771947
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 splayn

возможно Вам следует использовать массив
или класс коллекшин

т.к. с эмпти оч.тяжело искать что-то - только перебором или
точно по имени проперти + у него нет интерфейса (методов и событий)
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771948
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а это свойство парент мне необходимо для рекурсивного вызова функции, в которой я высчитываю левый и верхний отступ появляющегося меню.
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771962
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну в таком случает Grid легче сделать на основе своего класса. Там хоть можно создавать не только свои свойства, но и методы обработки. А хранить настройки можно и в самом Grid -
This.AddProperty("lSelected")
Ну и так далее. Зачем для этого использовать "лишний" объект?
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34771963
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автордестрой у контролов не выполняются

я же тебе объяснил - прибей
свойство, в котором хранится объект, у которого видно ссылка
на форму

это делается в методах таких хитрых классов
при наступлении таких событий
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772005
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MiklSНу в таком случает Grid легче сделать на основе своего класса. Там хоть можно создавать не только свои свойства, но и методы обработки. А хранить настройки можно и в самом Grid -
This.AddProperty("lSelected")
Ну и так далее. Зачем для этого использовать "лишний" объект?

А много ли Вы встречали гридов со свойством oRightClick?
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772027
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это понятно, но
ThisForm.Grid1.oRightClick.lSelected=.T.
или
ThisForm.Grid1.lSelected=.T.
получается короче, хотя смысл остаётся тот же!!!!!
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772042
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MiklSЭто понятно, но
ThisForm.Grid1.oRightClick.lSelected=.T.
или
ThisForm.Grid1.lSelected=.T.
получается короче, хотя смысл остаётся тот же!!!!!

Так... значит empty есть, был, и будет быть :).. это необходимо для переносимости меню на другие компоненты, а не только на любой грид... вопрос в другом... (см. выше!!!!)
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772059
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
UNBINDEVENTS(this)
this.oRightClick = .NULL.
this.ofrmStartmenu = .NULL.
this.osubmenu = .NULL.
DODEFAULT()

ну выдумщик

можешь не отписываться от событий
они из стека сами грохнутся при умирании объекта

дудефайлт - там метод предка какого-то
у тебя пронаследованные классы???

не нулл, .f.



Код: plaintext
1.
2.
3.
4.
with this
store .f. to .oRightClick, .ofrmStartmenu,.osubmenu
endw 

...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772077
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо
Код: plaintext
1.
2.
3.
4.
5.
UNBINDEVENTS(this)
this.oRightClick = .NULL.
this.ofrmStartmenu = .NULL.
this.osubmenu = .NULL.
DODEFAULT()

ну выдумщик

можешь не отписываться от событий
они из стека сами грохнутся при умирании объекта

дудефайлт - там метод предка какого-то
у тебя пронаследованные классы???

не нулл, .f.



Код: plaintext
1.
2.
3.
4.
with this
store .f. to .oRightClick, .ofrmStartmenu,.osubmenu
endw 




да у меня пронаследованные классы. :) :) :) именно
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772090
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну может быть и так, как говорится - у каждого свои недостатки.
А для переносимости меню на другие компоненты - всё равно кидать его нужно не в Grid a Form!!!!!!!
И ссылки получаются короче!!!!!!
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772095
this.oRightClick = CREATEOBJECT("empty")
ADDPROPERTY(this.oRightClick, "Parent", this)

если строку "ADDPROPERTY(this.oRightClick, "Parent", this)" закоментарить , то форма закроется как положено.
Ну и что тут непонятно? Во вновь созданный объект засунул ссылку на грид и хочешь, чтобы она автоматом прибилась? На каком основании? Что кроме тебя знает, что надо при дестрое грида грохнуть еще и этот твой .oRightClick? А в нем ведь есть ссылка на грид. Вот дестрой грида и обламывается. А за ним обламывается дестрой остальных контролов и формы. Дописывай в дестрой грида уничтожение .oRightClick.
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772112
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можете промоделировать эту ситуацию:
создаем любой компонент пусть - сомбобокс, создадим ему свойство "o", у него в ините пишем строки:
public o
o = CREATEOBJECT("empty")
ADDPROPERTY(o, "Top", 0)
ADDPROPERTY(o, "Left", 0)
ADDPROPERTY(o, "Height", 0)
ADDPROPERTY(o, "BaseClass", "empty")
ADDPROPERTY(o, "lSelected", .f.)
ADDPROPERTY(o, "Parent", this)
this.o = o
Все... кладем этот комбо на форму и грузим форму :) :) :) а теперь пробуем форму закрыть :) :) :)
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772126
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходящий. this.oRightClick = CREATEOBJECT("empty")
ADDPROPERTY(this.oRightClick, "Parent", this)

если строку "ADDPROPERTY(this.oRightClick, "Parent", this)" закоментарить , то форма закроется как положено.
Ну и что тут непонятно? Во вновь созданный объект засунул ссылку на грид и хочешь, чтобы она автоматом прибилась? На каком основании? Что кроме тебя знает, что надо при дестрое грида грохнуть еще и этот твой .oRightClick? А в нем ведь есть ссылка на грид. Вот дестрой грида и обламывается. А за ним обламывается дестрой остальных контролов и формы. Дописывай в дестрой грида уничтожение .oRightClick.
Я ж уже писал это :) :) :):
UNBINDEVENTS(this)
this.oRightClick = .NULL.
this.ofrmStartmenu = .NULL.
this.osubmenu = .NULL.
DODEFAULT()

Разве this.oRightClick = .NULL. не убивает этот empty?
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772148
MiklS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работает если в QueryUnload формы вставить код
This.Grid1.oRightClick=.F.
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772156
Разве this.oRightClick = .NULL. не убивает этот empty?
А должен? Почему?
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772210
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
splayn в метод дестрой грида

Код: plaintext
1.
2.
3.
with this
store .f. to .oRightClick, .ofrmStartmenu,.osubmenu
endw 

if !dodefa() вначало или в конец в зависимости от того что
делает код предка


ты пробовал?
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772224
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UNBINDEVENTS(this)

не нужно

все подписанные события для этого объекта уничтожатся при
разрушении этого объекта
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772233
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пиши

set step on
в дестрой грида
и в анлоад формы

после дестрой грида

пойдут
дестрои неуничтоженных объектов

а затем должен стартовать
анлоад формы

в чем у Вас проблемы???

танцы с бубнами - слушайте одного человека
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772279
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимопиши

set step on
в дестрой грида
и в анлоад формы

после дестрой грида

пойдут
дестрои неуничтоженных объектов

а затем должен стартовать
анлоад формы

в чем у Вас проблемы???

танцы с бубнами - слушайте одного человека

1.
set step on
в дестрой грида
и в анлоад формы
сделал.
2. Запустил форму.
3. Нажал на Х на форме (закрытие). ничего не произошло... просто Х - потух и стал не доступен.
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772361
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
splayn...
3. Нажал на Х на форме (закрытие). ничего не произошло... просто Х - потух и стал не доступен.
Такое поведение возможно если где-то стоит команда SUSPEND
Попробуй запустить дебагер и посмотреть где именно.
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772367
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ладно... на этом ВСЕМ огромное спасибо... выкручусь так:
в ините грида
BINDEVENT(thisform,'QueryUnload', this,'destroy',1)
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772698
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто-то форму держит
где-то ссылка
такого в своей библиотеке оставлять нельзя

в метод QueryUnload

set step on

и пошагово
смотреть
как и куда дебаггер идет и что выполняется
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772704
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если возможно, нарисуйте маленький пример,
демонстрирующий Вашу проблему
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34772963
splayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимоесли возможно, нарисуйте маленький пример,
демонстрирующий Вашу проблему
можете промоделировать эту ситуацию:
создаем любой компонент пусть - сомбобокс, создадим ему свойство "o",
у него в ините пишем строки:
Код: plaintext
1.
this.o = CREATEOBJECT("empty")
ADDPROPERTY(this.o, "Parent", this)
а в дестрое такой код:
Код: plaintext
this.o=.f.
Все... кладем этот комбо на форму и грузим форму :) :) :) а теперь пробуем форму закрыть :) :) :)
Можно даже степы понаставлять, где душа пожелает... только дебагер ни к чему не приведет, вернее нигде не остановится.
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34773594
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то сталкивался с похожей проблемой. Похоже пока есть ссылки на объект - фокс сам ему Destroy() не вызывает. Я тогда просто отказался от циклических ссылок.
Можешь делать принудительно в Destroy() формы что-то типа:
Код: plaintext
ThisForm.RemoveObject("Cbotest1")
Если надо что-то более универсальное - сделать так чтобы при создании объекты с ссылками регистрировали ссылку на свойство (ссылающееся на себя) у объекта формы, и объект формы в своем Destroy() делал им RemoveObject() или =.F.
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34781493
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
долго думал

примеры лепил, но ....

в Вашем случае
подписка на событие является наилучшум способом, но опять-же но ....

я в своей практике так объекты не кладу,
считаю, что нелогично к объету потомку привязывать родителя,
но это для отдельной беседы ....

считаю, что такую беду нужно лечить именно иным подходом к построению классов
и привязке объектов

если необходимо быстро сослаться на родителя,
то ведб можно по-другому организовать
интерф.методы


метод.грида(грид.oEmpty,this)

метод.oEmpty(this) из метода грида
метод.oEmpty(_screen.activeform.grid) - откуда угодно

возможно не стоит добавлять такую ссылку и добавлять св-во в пустой объект,
проще взять кастом с наличием у него и парента и ....
...
Рейтинг: 0 / 0
Дестрой у формы выполняется, а у её компонентов не выполняется!
    #34781514
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про емпти немного наврал

типа так

бубен.метод(....grid.oEmpty, ....Grid)

ну как-то так ...
не держать ее в эмпти, а постоянно куда-то передавать
доп-но ссылку на того, к кому эмпти положен
(ведь Вы все-одно где-то что-то должны сделать..)

ну вроде так ...
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Дестрой у формы выполняется, а у её компонентов не выполняется!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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