powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопросы про CreateObject и Addobject
7 сообщений из 7, страница 1 из 1
Вопросы про CreateObject и Addobject
    #32525151
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрел кучу примеров... И так делают и этак...

Думал что при AddObject если удалить родителя то и дитя умрет, а нет ... тогда в чем принципиально разница?

Передавать параметры (this,thisform,) в случае с CreateObject не совсем хочется... А через AddObject можно через Parenta стукнуться к методам и свойствам родителям...

Так вот у меня классы пытаюсь все делать через ADDOBJECT - длинная получается цепь... Это опасно? И еще как узнать есть ли такой-то метод у родителя... (В FoxClub был ответ, но FoxClub че-то недоступен...)

Спасибо..
...
Рейтинг: 0 / 0
Вопросы про CreateObject и Addobject
    #32525209
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PEMTSTATUS(this.parent,<Method,Event,Property>,5)
...
Рейтинг: 0 / 0
Вопросы про CreateObject и Addobject
    #32525216
AddObject - это один из методов объекта - контейнера, позволяющий в процессе выполнения приложения добавлять в него новые управляющие элементы.
CreateObject - это функция, позволяющая создавать новые объекты (кроме управляющих элементов - см. FoxHelp).
Так что это совершенно разные вещи.

> Думал что при AddObject если удалить родителя то и дитя умрет, а нет ...

Что Вы имеете в виду? Все созданные при помощи метода AddObject управляющие элементы автоматически уничтожаются при уничтожении объекта-контейнера.
...
Рейтинг: 0 / 0
Вопросы про CreateObject и Addobject
    #32526056
Фотография Андрей Давыдов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Вячеслав Клепинин

>> кроме управляющих элементов

Создавать можно.
ss=CREATEOBJECT("TextBox")

>> Все созданные при помощи метода AddObject управляющие элементы автоматически уничтожаются при уничтожении объекта-контейнера.

При условии что на вложенные объекты нет внешних ссылок.
...
Рейтинг: 0 / 0
Вопросы про CreateObject и Addobject
    #32526200
to Андрей Давыдов

> Создавать можно.
ss=CREATEOBJECT("TextBox")


Создадим глобальную переменную o_SS
На форме разместим кнопку, в методе Click напишем код:

Код: plaintext
1.
2.
3.
4.
5.
6.
o_ss = CREATEOBJECT('TextBox')
o_ss.top =  10 
o_ss.left =  10 
o_ss.height =  30 
o_ss.width =  100 
o_ss.visible = .T.

После выполнения кода в упор не видим на форме никакого TextBox'a. Тем не менее можно посмотреть значения свойств созданного объекта, например, o_ss.Width. В то же время попытка посмотреть значение свойства o_ss.Name приводит к ошибке.
Таким образом, объект действительно создаётся. но не как контрол в форме-контейнере, а как нечто самостоятельно живущее (???). Завершение формы происходит абсолютно нормально.
Смотрим FoxHelp:
Note that ClassName cannot be the Visual FoxPro OLE Container control base class.

Теперь создадим контрол с использованием AddObject:

Код: plaintext
1.
2.
3.
4.
5.
thisform.AddObject('Text1','TextBox')
thisform.Text1.top =  50 
thisform.Text1.left =  10 
thisform.Text1.height =  30 
thisform.Text1.width =  100 
thisform.Text1.visible = .t.

Всё ОК, контрол на форме.
Завершаем форму - контрол благополучно уничтожается.

Продолжим эксперимент. Создадим ссылку на этот контрол в глобальной переменной o_Text:

Код: plaintext
1.
o_Text = thisform.text1
o_Text.value = 'Вставка текста'

В TextBox'e появится текст.
Если теперь попробовать завершить форму, то действительно это сделать не удастся, потому как существует внешняя ссылка на TextBox.
Но! Уничтожение ссылки не приводит к уничтожению контрола, как это было бы с объектом, созданным функцией CreateObject.
В то же время после уничтожения ссылки командой Release o_Text форма закрывается нормально.

Вот и всё. Или я в чём-то не прав?
...
Рейтинг: 0 / 0
Вопросы про CreateObject и Addobject
    #32527847
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2:Piva - спасибо.
******************
Нашел разницу - она в том что не во всех контролдах можно сделать ADDOBJECT... Увы... При нажатии на кнопку GRID не ADDOBJECT ... :(

То есть теперь нужно думать когда и как использовать ADD и CREATE :(

Раньше (без классов) каждый модуль мог запустить каждый другой модуль и я упирался всегда только на глубину вложенности DO...

Теперь часть классов нужно использовать через ADDOBJECT, а часть через CREATEOBJECT...

Я по-прежнему не могу врубиться когда мне легче станет от программирования в классах... Каждый отдельно работает, а начинаю связывать.... дохну ...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Вопросы про CreateObject и Addobject
    #38333088
КысьЗлой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Клепинин,

а можно спросить?
вот у меня в таком же месте
thisform.AddObject('Text1','TextBox')

при внесении изменений в 'TextBox' (новые поля)
AddObject их не видит под отладчиком.
Хотя при формировании экзешника все красиво...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопросы про CreateObject и Addobject
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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